2015-05-06 2 views
0

Это мой запрос:Mysql подзапрос не отображая строки

SELECT a.vardas, a.pavarde FROM `y6fdt_igym_abonementai` AS a 
INNER JOIN 
( 
    SELECT max(galiojaiki) gal, id, abonementas FROm y6fdt_igym_sutartys 
) c 
on c.abonementas = a.id 

Почему я вижу только a.vardas и a.pavarde столбцы как результат. Но не id, abonementas из подзапроса?

+0

Просто для информации. Вы проверили результат подзапроса? Потому что «max» без «group by» в других полях может дать вам другой результат, как и ожидалось. – stevenvanc

ответ

5

Если вы хотите увидеть эти столбцы, вы должны добавить их в главный пункт SELECT.

SELECT a.vardas, a.pavarde, c.gal, c.id, c.abonementas 
FROM `y6fdt_igym_abonementai` AS a 
INNER JOIN 
( 
    SELECT max(galiojaiki) gal, id, abonementas FROm y6fdt_igym_sutartys 
) c 
on c.abonementas = a.id 

Обратите внимание, что id и abonementas столбцов в подзапросах не будут от строки с max(galiojaiki). Он просто возьмет их из некоторой случайной строки в таблице. Если вы хотите, чтобы эти конкретные значения, вам нужно использовать:

SELECT a.vardas, a.pavarde, c.gal, c.id, c.abonementas 
FROM `y6fdt_igym_abonementai` AS a 
FROM y6fdt_igym_sutartys AS c ON c.abonementas = a.id 
INNER JOIN 
( 
    SELECT max(galiojaiki) AS maxgal 
    FROm y6fdt_igym_sutartys 
) d on c.galiojaiki = d.maxgal 
0

изменение

SELECT a.vardas, a.pavarde FROM `y6fdt_igym_abonementai` AS a 
... 
SELECT max(galiojaiki) gal, id, abonementas FROm y6fdt_igym_sutartys 

в

SELECT a.vardas, a.pavarde FROM `y6fdt_igym_abonementai` a 
... 

SELECT max(c.galiojaiki) c.gal, c.id, c.abonementas FROm y6fdt_igym_sutartys c 
Смежные вопросы