Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php/mysql] kłopot z wyszukiwaniem w 3 tabelach jednocześnie
neverever
post 10.09.2007, 21:46:54
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

Ostrzeżenie: (10%)
X----


mam 3 tabele...

tabela1:
id, nazwa

tabela2:
id, nazwa, tabela1

tabela3:
id, nazwa, tabela1, tabela2


Są one połączone relacjami tak, że:

niektóre rekordy z tabela1 mają odpowiadające im rekordy w tabela2 (relacja: tabela1.id=tabela2.tabela1)
a z kolei niektóre rekordy z tabela2 mają odpowadające im rekordy w tabela3 (relacja: tabela2.tabela1=tabela1.id, tabela3.tabela1=tabela2.tabela1 i tabela3.tabela2=tabela2.id ...)

No i teraz mam problem np. z wyszukaniem po polu nazwa tak by można było wyświetlić w lićie wyników:
tabela1.nazwa -gdy brak dowiązanych rekordów z tabela2
tabela1.nazwa > tabela2.nazwa -gdy brak dowiązanych rekordów z tabela3
i tabela1.nazwa > tabela2.nazwa > tabela3.nazwa -gdy wszystkie 3 tabele są połączone wspólnymi rekordami

...bo jak dam:
  1. <?php
  2. if($sql = mysql_query("SELECT tabela3.nazwa AS t3naz, tabela3.id AS t3id, tabela2.nazwa AS t2naz, 
    tabel
  3. 2.id AS t2id, tabela1.nazwa AS t1naz, tabela1.id AS t1id FROM tabela3, tabela2, 
  4. abela1 WHERE tabela3.nazwa LIKE '%slowo%' OR tabela2.nazwa LIKE '%slowo%' OR tabela1.nazwa LIKE '%slowo%'",$conn)){
  5.  
  6. while ($rekord = mysql_fetch_array($sql)){
  7. echo $rekord['t1naz'].' > '.$rekord['t2naz'].' > '.$rekord['t3naz'].'<br>';
  8. }
  9. }
  10. ?>
to mi sieczka wychodzi - niby jasne bo relacji tu brak.
-w zasadzie nawet tam gdzie nie powinno w t2naz albo t3naz nic pokazywać jednak coś jest.

Ale jak dodam ww. relacje to mi ładuje tylko to gdzie jest ona pełna
a nie ładuje np. tych gdzie np. tabela1 albo tabela2 nie ma dowiązanych rekordów z tabeli podrzędnej.


Jak to rozwiązać?

Ten post edytował neverever 10.09.2007, 21:53:19


--------------------
neverever
Go to the top of the page
+Quote Post
qqrq
post 10.09.2007, 23:14:59
Post #2





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

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


Poczytaj i pokombinuj z INNER JOIN, OUTER JOIN, LEFT INNER JOIN i podobnymi - to taki trochę inny sposób łączenia tabel niż ty zastosowałeś (niektóre tolerują, jak ty to określasz, "brak relacji" po jednej, lub po obu stronach), no i jeszcze IS NULL. Poszukaj. smile.gif


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 00:09