Как получить результаты запроса mySql из другого запроса

0

У меня 3 таблицы mySql:

shop
        id1  shop_name 
         1   shop1
         2   shop2
         3   shop3

    queue_number
        id2  id_shop  queue_current_number
         1      1             32
         2      2             56
         3      3             22

    queue_customer
        id3  id_queue   your_number   
         1      1            33
         2      1            34
         3      1            35
         4      2            57

Я начинаю с этого вопроса:

SELECT *
FROM shop
LEFT JOIN queue_number ON queue_number.id_shop = shop.id1
WHERE id_shop = 1
GROUP BY id2

Мои результаты:

shop1> queue_current_number = 32

shop2> queue_current_number = 56

shop3> queue_current_number = 22

Я бы хотел получить такой результат:

shop1> queue_current_number = 35

shop2> queue_current_number = 57

shop3> queue_current_number = 22

Спасибо!

  • 0
    И будет ли 'your_number' всегда выше, чем 'queue_current_number' - или вы всегда хотите вернуть 'your_number', если он доступен, независимо от того?
Показать ещё 4 комментария
Теги:
concat

2 ответа

0

Я предполагаю, что вы ищете наивысшую ценность, либо предпочитая queue_customer над queue_number (используйте COALESCE...), либо желая максимальный максимум из двух (используйте IF (COALESCE...).

    SELECT COALESCE( c.your_number, n.queue_current_number ) 
    /* or maybe you want IF( COALESCE( c.your_number, 0 ) > COALESCE( n.queue_current_number, 0 ), c.your_number, n.queue_current_number ) */
    FROM shop s
    LEFT JOIN queue_number n   ON s.id1 = n.id_shop 
                              AND NOT EXISTS( SELECT * FROM queue_number n2
                                              WHERE n.id_shop = n2.id_shop
                                                AND n.queue_current_number < n2.queue_current_number )
    LEFT JOIN queue_customer c ON n.id2 = c.id_queue
                              AND NOT EXISTS( SELECT * FROM current_number c2
                                              WHERE c.id_queue = c2.id_queue
                                                AND n.your_number < n2.your_number )
    WHERE s.id_shop = 1
  • 0
    Привет, я пытался, но есть эта ошибка> Таблица "my_table.current_number" не существует
  • 0
    Я не вижу my_table.current_number нигде в запросе, но можно предположить, что я использовал псевдоним, и тогда вы должны использовать псевдоним везде. Поэтому, когда у вас есть FROM shop s, вы должны использовать s.id1 и никогда не shop.id1
0

Попробуйте это с подзапросом:

SELECT shop.id1, shop.name, COALESCE(younumber,queue_current_number) as q_current_number
FROM shop
LEFT JOIN queue_number ON queue_number.id_shop = shop.id1
left join
(select id_queue,max(your_number) as younumber
from queue_customer group by id_queue)c on c.id_queue= shop.id1
WHERE id_shop = 1
  • 0
    Эта ошибка # 1064 - у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'as queue_current_number FROM shop LEFT JOIN queue_number ON queue_number.id_shop' в строке 1
  • 0
    изменил запрос, по ошибке я поставил имя таблицы в качестве столбца
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню