Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: 2 tabele i problem z zapytaniem
Forum PHP.pl > Forum > Bazy danych > MySQL
Matiash
Witam,

Otóż posiadam 2 tabele:
1.komentarze_relacji
-pk_id
-data
-tresc
-ocena
-fk_user_id
-fk_relacja_id

2.komentarze_zdjecia
-pk_id
-data
-tresc
-ocena
-fk_user_id
-fk_zdjecie_id


Potrzebuję skonstruować tak zapytanie aby w wyniku było:
data | tresc | ocena | fk_user_id | fk_relacja_id | fk_zdjecie_id
--------------------------------------------------------------------------------------------------
2010-08-09 | lalala.... | 2 | 15 | 10 | null
2010-08-09 | lalala.... | 4 | 10 | null | 5

Czy jest to możliwe do osiągnięcia ?
krispak
  1. SELECT date, tresc, ocena, fk_user_id, fk_relacja_id, NULL AS fk_zdjecie_id FROM komentarze_relacji
  2. UNION # lub UNION ALL jezeli ma zwracac rekordy ktore sie powtarzaj
  3. SELECT date, tresc, ocena, fk_user_id, NULL, fk_zdjecie_id FROM komentarze_zdjecia
Matiash
Dzięki, powyższe działa. Jeszcze jedno pytanie.
Mam jeszcze dwie tabele:
1. zdjecia
-pk_id
-fk_user_id
...

2.relacje
-pk_id
-fk_user_id
...


Przypuścmy, że
relacje.fk_user_id = 3 oraz zdjecia.fk_user_id = 3
a unia zwraca
zdjecia.pk_id = unia.fk_zdjecie_id
relacje.pk_id = unia.fk_relacja_id
krispak
Troche nie rozumiem.. Zle sie wykonuje czy chcesz osiagnac takie zapytanie?
Matiash
Twój skrypt wykonuje się dobrze smile.gif Jednak chcę jeszcze trochę zmodyfikować to zapytanie
-------------------------------------------

Dobra poradziłem sobie tak:

  1. SELECT kr.date, kr.tresc, kr.ocena, kr.fk_user_id, kr.fk_relacja_id NULL AS fk_photos_id
  2. FROM komentarze_relacji kr INNER JOIN relacje r ON r.pk_id = kr.fk_relacja_id WHERE r.fk_user_id = 2
  3. UNION ALL SELECT kz.date, kz.tresc, kz.ocena, kz.fk_user_id, NULL, kz.fk_zdjecie_id
  4. FROM komentarze_zdjecia kz INNER JOIN zdjecia z ON z.pk_id = kz.fk_zdjecie_id WHERE z.fk_user_id = 2 ORDER BY date DESC;


Potrzebuję jeszcze dodać warunek żeby unia zwracała wiersze w których fk_user_id != 2
Jednak:

  1. SELECT kr.date, kr.tresc, kr.ocena, kr.fk_user_id, kr.fk_relacja_id NULL AS fk_photos_id
  2. FROM komentarze_relacji kr INNER JOIN relacje r ON r.pk_id = kr.fk_relacja_id WHERE r.fk_user_id = 2
  3. UNION ALL SELECT kz.date, kz.tresc, kz.ocena, kz.fk_user_id, NULL, kz.fk_zdjecie_id
  4. FROM komentarze_zdjecia kz INNER JOIN zdjecia z ON z.pk_id = kz.fk_zdjecie_id WHERE z.fk_user_id = 2 WHERE fk_user_id !=2 ORDER BY date DESC;


zwraca błąd, że są 2x WHERE;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.