0

This is my query:

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

Why I see only a.vardas and a.pavarde columns as result. But not id, abonementas from subquery ?

1
  • Just for your info. Did you check the result of the subquery? Because that "max" without a "group by" on the other fields can give you another result as expected. Commented May 6, 2015 at 17:55

2 Answers 2

5

If you want to see those columns, you have to add them to the main SELECT clause.

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

Note that the id and abonementas columns in the subquery will not be from row with max(galiojaiki). It will just take them from some random row in the table. If you want those specific values, you need to use:

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
Sign up to request clarification or add additional context in comments.

Comments

0

change

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

to

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.