Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 2 tabele i problem z zapytaniem, Widok lub unia ?
Matiash
post
Post #1





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 7.04.2007

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
krispak
post
Post #2





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
Matiash
post
Post #3





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 7.04.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
krispak
post
Post #4





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

Ostrzeżenie: (0%)
-----


Troche nie rozumiem.. Zle sie wykonuje czy chcesz osiagnac takie zapytanie?
Go to the top of the page
+Quote Post
Matiash
post
Post #5





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 7.04.2007

Ostrzeżenie: (0%)
-----


Twój skrypt wykonuje się dobrze (IMG:style_emoticons/default/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;

Ten post edytował Matiash 25.09.2010, 19:52:59
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.09.2025 - 17:54