Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Szukanie w kilku niepowiązanych tabelach
admix
post 21.02.2008, 01:46:14
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 11.11.2006

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


Mam coś takiego:

  1. "SELECT * FROM tabela_1 AS t1, tabela_2 AS t2, tabela_3 AS t3
  2. WHERE t1.id = t2.id AND t2.id = t3.id AND ( t1.kol1 LIKE '$szukaj' OR t1.kol2 LIKE '$szukaj' OR t2.kol1 LIKE '$szukaj' OR t2.kol2 LIKE '$szukaj' OR t3.kol1 LIKE '$szukaj' OR t3.kol2 LIKE '$szukaj')"


Chce wyszukiwać w każdej z 3 tabel w 2 kolumnach - tabele nie są powiązane ze sobą.

W jaki sposób mogę wyszukać korzystając z jednego zapytania w 3 różnych tabelach nie związanych ze sobą - aby zapytanie zwróciło mi tylko te wiersze w których została znaleziona dana fraza ?

Z góry dzięki za odpowiedź.

Ten post edytował admix 21.02.2008, 01:49:08
Go to the top of the page
+Quote Post
nevt
post 21.02.2008, 08:02:02
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


np. tak
  1. SELECT * FROM (
  2. (SELECT pole_1 FROM tabela_1) UNION
  3. (SELECT pole_2 FROM tabela_2) UNION
  4. (SELECT pole_3 FROM tabela_3)
  5. ) AS tmp
  6. WHERE pole_1 LIKE '%fraza%';


Ten post edytował nevt 21.02.2008, 08:02:12


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
admix
post 21.02.2008, 10:15:07
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 11.11.2006

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


Cytat(nevt @ 21.02.2008, 08:02:02 ) *
np. tak
  1. SELECT * FROM (
  2. (SELECT pole_1 FROM tabela_1) UNION
  3. (SELECT pole_2 FROM tabela_2) UNION
  4. (SELECT pole_3 FROM tabela_3)
  5. ) AS tmp
  6. WHERE pole_1 LIKE '%fraza%';



To zapytanie zwraca tylko jedno pole tabeli, a nie cały wiersz...
Go to the top of the page
+Quote Post
nevt
post 21.02.2008, 10:27:05
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


tak trudno to przerobić? dopisz sobie * ... np.
  1. SELECT * FROM (
  2. (SELECT pole_1 AS szukamy, * FROM tabela_1) UNION
  3. (SELECT pole_2 AS szukamy, * FROM tabela_2) UNION
  4. (SELECT pole_3 AS szukamy, * FROM tabela_3)
  5. ) AS tmp
  6. WHERE szukamy LIKE '%fraza%';

ale to zadziała tylko jeżeli struktura tych tabel jest identyczna (tzn. ilość, kolejność i typy pól są jendnakowe),
jeżeli te tabele są różnie zbudowane (a podejrzewam że tak jest) musisz sam zdecydwoawać które pola dołączyć do rezultatów,, tak żeby dostać spójny zbiór wynikowy, np:
  1. SELECT * FROM (
  2. (SELECT pole_1, pole_1a, pole_1b, pole_1c FROM tabela_1) UNION
  3. (SELECT pole_2, pole_2a, pole_2b, pole_2c FROM tabela_2) UNION
  4. (SELECT pole_3, pole_3a, pole_3b, pole_3c FROM tabela_3)
  5. ) AS tmp
  6. WHERE pole_1 LIKE '%fraza%';


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
admix
post 21.02.2008, 11:12:20
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 11.11.2006

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


Cytat(nevt @ 21.02.2008, 10:27:05 ) *
tak trudno to przerobić? dopisz sobie * ... np.
  1. SELECT * FROM (
  2. (SELECT pole_1 AS szukamy, * FROM tabela_1) UNION
  3. (SELECT pole_2 AS szukamy, * FROM tabela_2) UNION
  4. (SELECT pole_3 AS szukamy, * FROM tabela_3)
  5. ) AS tmp
  6. WHERE szukamy LIKE '%fraza%';

ale to zadziała tylko jeżeli struktura tych tabel jest identyczna (tzn. ilość, kolejność i typy pól są jendnakowe),
jeżeli te tabele są różnie zbudowane (a podejrzewam że tak jest) musisz sam zdecydwoawać które pola dołączyć do rezultatów,, tak żeby dostać spójny zbiór wynikowy, np:
  1. SELECT * FROM (
  2. (SELECT pole_1, pole_1a, pole_1b, pole_1c FROM tabela_1) UNION
  3. (SELECT pole_2, pole_2a, pole_2b, pole_2c FROM tabela_2) UNION
  4. (SELECT pole_3, pole_3a, pole_3b, pole_3c FROM tabela_3)
  5. ) AS tmp
  6. WHERE pole_1 LIKE '%fraza%';


Dzięki za pomoc ! - próbowałem to przerobić w sposób który podałeś, ale wyszukiwało tylko w pierwszych polach - trzeba było dopisać jeszcze "(...) AS tmp WHERE pole_1 LIKE '%$fraza%' OR pole_1a LIKE '%$fraza%' ...itp."
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: 24.07.2025 - 23:25