Grzegorz M.

Grzegorz M. www.avatec.pl

Temat: Mysql - zapytanie left join

Witam,

Jak zapisać zapytanie:

mam 2 tabele:
id | gid | file

i druga tabele
id | name | parent

i teraz chce pobrac po jednym wpisie z drugiej tabeli plus jeden wpis a dokladnie pole file na podstawie polaczenia gid=id

SELECT file
FROM `gallery_images` , `gallery_categorys` AS category
WHERE `gallery_images`.gid
IN (

SELECT * FROM `gallery_categorys`
)
LIMIT 0 , 1

tak kombinowałem i nic, w subselect nie daje mi uzyc limit, a gdy zrobilem zapytanie z left join dzialalo by spoko, procz tego ze duplikowalo wpis z tabli drugiej.

Dokładne działanie - pobranie pierwszego zdjecia na okladki albumu.

Kto pomoze ?
Paweł W.

Paweł W. java developer at
https://rozwoj-oprog
ramowania.pl

Temat: Mysql - zapytanie left join

jesli id wystepuje wiele razy w drugiej tabeli to oczywiscie left join zwroci wszystkie zduplikowane rekordy.
Nie wiem jak dokladnie chcesz to wyjac, a probowales po prostu INNER JOIN?
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: Mysql - zapytanie left join

SELECT c.*, i.file
FROM gallery_categorys AS c
LEFT JOIN
(SELECT gid, MIN(file) FROM gallery_images GROUP BY gid) AS i
ON i.gid = c.id


Nie napisałeś na jakiej podstawie ma być wybierane zdjęcie, więc dałem plik o 'najmniejszej' nazwie. W zależności od tego jak jest skonfigurowany serwer, GROUP BY będzie wymagał funkcji agregującej lub nie.
Grzegorz M.

Grzegorz M. www.avatec.pl

Temat: Mysql - zapytanie left join

Wywaliło błąd, i.file nie ma tabeli, choć niżej jest przypisana.
Natomiast kryteria: pierwsze lepsze zdjecie. Zaraz pokombinuje z tym zapytaniem, choć niedokońca je rozumiem (MIN, GROUP BY) :P

EDIT: zmienilem i.file na i.* i pobiera dobrze - zaraz przetestuje to na większej liczbie danych. Z góry dzięx :-)
Michał Jarosz:
SELECT c.*, i.file
FROM gallery_categorys AS c
LEFT JOIN
(SELECT gid, MIN(file) FROM gallery_images GROUP BY gid) AS i
ON i.gid = c.id


Nie napisałeś na jakiej podstawie ma być wybierane zdjęcie, więc dałem plik o 'najmniejszej' nazwie. W zależności od tego jak jest skonfigurowany serwer, GROUP BY będzie wymagał funkcji agregującej lub nie.Grzegorz M. edytował(a) ten post dnia 28.07.10 o godzinie 13:09
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: Mysql - zapytanie left join

Trzeba zmienić 'MIN(file)' na 'MIN(file) AS file' ;)
Grzegorz M.

Grzegorz M. www.avatec.pl

Temat: Mysql - zapytanie left join

Doszedłem do tego drogą dedukcji :-) Udało się :-)
Masz Michale u mnie wielkie Piwko. Dziękuje :-)

Następna dyskusja:

Zapytanie do mySQL




Wyślij zaproszenie do