Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Prawidlowe laczenie tabel
JamalBIG
post
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


Witam

Czy moglby ktos przeanalizowac moje zapytanie do bazy danych w ktorym chcialem polaczyc wyniki z dwoch tabel ale najwyrazniej mam jakis blad bo nie mam zadnego wyniku...

  1. <?php
  2. $sql = $db->sql_query("SELECT d.*, t.* FROM 'nuke_downloads_downloads' d LEFT JOIN t 'torrent_torrents' WHERE d.title OR d.version OR t.search_text LIKE '%$search%' DESC");
  3. while ($wynik = $db->sql_fetchrow($sql)) {
  4. $lid = $wynik['d.lid'];
  5. $title = $wynik['d.title'];
  6. $id = $wynik['t.id'];
  7. $name = $wynik['t.name'];
  8.  
  9. echo "$lid - $title";
  10. echo "$id - $name";
  11. }
  12. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Suh
post
Post #2





Grupa: Zarejestrowani
Postów: 112
Pomógł: 27
Dołączył: 24.08.2007
Skąd: Tarnów

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


Witam,
2 rzeczy wpadły mi w oko.

- w momencie gdy masz łączenie LEFT JOIN wydaje mi się, że najpierw powinna być podana nazwa tabeli, a dopiero po niej alias,

- druga sprawa.. jeżeli łączysz tabele za pomocą LEFT JOIN to powinieneś użyć dodatkowo klauzuli USING(arg), gdzie argument jest kolumną o takiej samej nazwie w obu tabelach, lub ewentualnie warunku ON np.. ON d.lid == t.id. Bo za pomocą WHERE ty tylko wydobywasz ważne dla Ciebie rekordy, ale nie łączysz tabel !

- ważne jest też czy tabela t ma rekordy pasujące (właśnie za pomocą łaczenia USING / ON) do tabeli p, bo ona jest właśnie dołączana do tej tabeli, a nie odwrotnie.

Pzdr.
Go to the top of the page
+Quote Post
JamalBIG
post
Post #3





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


A moglbys mi jakos podpowiedziec jak polaczys prawidlowo te dwie tabele?

Tabela nuke_downloads_downloads ma strukture: LID | TITLE | NAME | VERSION
Tabela torrent_torrents: ID | NAME | SEARCH_TEXT

  1. SELECT d.*, t.* FROM 'nuke_downloads_downloads' d LEFT JOIN 'torrent_torrents' t ON d.title=t.name WHERE d.title OR d.version OR t.search_text LIKE '%$search%' DESC
Go to the top of the page
+Quote Post
Suh
post
Post #4





Grupa: Zarejestrowani
Postów: 112
Pomógł: 27
Dołączył: 24.08.2007
Skąd: Tarnów

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


To zależy co w obu tabelach będzie się powtarzało.. innymi słowy co będzie "wspólnym kluczem" dla obu tabel. Jeżeli name z tabeli t będzie mogło mieć takie same wartości co title z tabeli d, to warunek ON, który podałeś powinien w pełni załatwić sprawę.
Go to the top of the page
+Quote Post
JamalBIG
post
Post #5





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


A czy wspolnym kluczem moze byc szukane slowo (wyrazenie)? Bo chodzilo mi o zrobienie wyszukiwarki ktora przeszukiwa by dwie tabele...
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: 25.09.2025 - 22:47