Как сделать Вложенные Запросы в SQL - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь выучить SQL, и, хотя я медленно учусь, как запрашивать данные, я застрял в запросе результатов запроса.Возьмите этот пример

Я хочу, чтобы инструкция SQL делала 2 вещи.Предположим, у меня есть 2 таблицы, подобные приведенной ниже (таблица 1 заимствована из другого примера переполнения стека)

Таблица 1:

ID  game   point  time
1    x      5     7:00
1    z      4     11:00
2    y      6     9:00
3    x      2     2:00
3    y      5     4:00
3    z      8     6:00
4    k      0     8:00    

Таблица 2:

id  tv chan
1    cab  
2    trop  
3    start   
4    cab  

Первое, что я хочу сделать, это объединить определенные столбцы из этих таблиц.Я знаю, что могу выбрать эти столбцы и выполнить внутреннее объединение для идентификатора

Однако второе, что я хочу сделать, это отбросить все строки со значением точки 0, а затем иметь только строки с отличным именем игры с самым низкимстоимость балла.Итак, я хочу, чтобы финальный стол выглядел так

id  game   point   tv chan    
1    z      4       cab
2    y      5       trop
3    x      2       start

Спасибо

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вы можете попробовать что-то вроде этого:

SELECT t1.ID, 
       t1.game, 
       t1.point, 
       t2.tv_chan 
FROM Table1 AS t1
INNER JOIN Table2 AS t2 ON t2.id = t1.id 
INNER JOIN (SELECT t11.game, MIN(t11.point) AS min_point  
            FROM Table1 AS t11 
            WHERE t11.point != 0 
            GROUP BY t11.game
           ) AS t3 ON t3.game = t1.game
                      AND t3.min_point = t1.point 
WHERE t1.point != 0 
0 голосов
/ 24 сентября 2018

Вы можете использовать объединение с подзапросом, который группирует по идентификатору и игре для получения минимального балла

    select t1.id, t1.game. t1.point, t2 `tv chan`
    from (
        select id, game,  min(point) point
        from table1
        where point > 0
        group by id, game
    ) t1 
    inner join table2 t2 on t1.id = t2.id
...