MySQL wiele pól z podzapytań

0

Witam,
na wstępie napiszę, że zapytanie zostało okrojone, więc ma troszkę inne działanie niż tutaj podaję.

Mam takie zapytanie, które pobiera wszystkie produkty, w których numer grafiki odpowiada grafice, która należy do użytkownika z ID = 1. Grafika to inaczej zdjęcie produktu.

SELECT * FROM produkty WHERE grafic_id IN(SELECT grafic_id FROM grafiki WHERE user_id = 1)

To zapytanie działa poprawnie, ale nie potrafię przerobić tego tak bym mógł np: przekazać sobie jeszcze nazwę grafiki:

SELECT * FROM produkty WHERE (grafic_id, grafic_name) IN(SELECT grafic_id, grafic_name FROM grafiki WHERE user_id = 1)

Dostaję błąd:
Unknown column 'grafic_name' in 'IN/ALL/ANY subquery'

Jak dokładnie to zrobić ?

0

No ale ja rozumiem że w tabeli produkty nie masz grafic_name więc to oczywiste że to zapytanie nie działa. Zrób po prostu joina a nie kombinuj.

SELECT produkty.*, grafiki.grafic_name FROM produkty inner join grafiki on produkty.grafic_id = grafiki.grafic_id
WHERE user_id = 1

BTW: wiesz że po angielsku grafika to graphic a nie grafic? o_O

0

Racja ... z pośpiechu napisałem grafic i tak kopiowałem.

A co do Twojego przykładu to wiem że tak można bo już tak robiłem, ale chciałbym zrobić to poprzez podzapytanie. Znalazłem taki przykład w SQL:
Znaleźć pracowników o najniższych zarobkach w ich departamentach.

SELECT ename, sal, deptno
FROM emp
WHERE (sal, deptno) IN
                   (SELECT MIN(sal), deptno
                    FROM emp
                    GROUP BY deptno);

Czyli w SQL jest taka możliwość, a w MySQL nie mogę tego odtworzyć...
Ma ktoś jeszcze jakiś pomysł ?

0

OMG czy ty w ogóle rozumiesz co się tutaj dzieje? To jest ZUPEŁNIE inne zapytanie. Oni tutaj sobią self-join między tymi samymi tabelami, dwa razy łączą tabelę emp. A ty chcesz zrobić złączenie dwóch różnych tabel!
Czemu chcesz z tego robić podzapytanie kiedy join jest bardziej naturalny?

0

Dla praktyki. Teraz rozumiem czemu to nie działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1