Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zapytanie "like" do wielu tabel
devoth
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 14.07.2003

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


Witam grupowicze smile.gif

staram się zrobić wyszukiwarkę i mam problem z napisaniem zapytania które znajdowałoby określone wyrażenie (w tym przypadku nazwę telefonu np. "nokia" albo "3210") w kilku tabelach.

Mam następujące tabele:
adaptory, akumulatorki, anteny, anteny_w, bluetooth, ... itd

tabele mają taka samą strukturę, w bazie wyglądają następująco:
[sql:1:055e26575d]CREATE TABLE adaptory (
Lp INTEGER AUTO_INCREMENT PRIMARY KEY DEFAULT 1 NOT NULL,
nazwa VARCHAR(80),
cena_h_n DOUBLE(4,2),
cena_h_b DOUBLE(4,2),
cena_d_n DOUBLE(4,2),
cena_d DOUBLE(4,2),
zdjecie VARCHAR(30),
opis TEXT,
data DATE)[/sql:1:055e26575d]
wszystkie zapisane w tablicy $akcesoria w następujący sposób:
[php:1:055e26575d]<?php
$akcesoria['Adaptory dual-SIM'] = 'adaptory';
$akcesoria['Akumulatorki Li-ion i ni-mh'] = 'akumulatorki';
$akcesoria['Anteny'] = 'anteny';
$akcesoria['Antenki wymienne'] = 'anteny_w';
// i tak dalej...
?>[/php:1:055e26575d]

teraz buduję zapytanie szukające ile jest wystąpień wartości zmiennej $wht w tabeli w polu nazwa
[php:1:055e26575d]<?php
// Otwarcie polaczenia z baza danych
$link = dbConnect();
echo implode(", ",$akcesoria);
// pytam ile jest produktow
$query = "SELECT count(*) FROM akumulatorki where nazwa like "%" . $wht . "%"";

$result = @mysql_query($query);

list($ile_rekordow) = @mysql_fetch_row($result);
?>[/php:1:055e26575d]
Problem polega na tym że niestety tych tabel jest kilkanaście i nie potrafię napisać takiego zapytania któro obsłużyłoby je wszystkie za jednym razem. Jedyne co udało mi się wykombinować po przeczytaniu kilku wątków na tym forum to:
[sql:1:055e26575d]SELECT adaptory.nazwa as 'aa', akumulatorki.nazwa as 'ab' FROM adaptory, akumulatorki where akumulatorki.nazwa like "%nokia%" AND adaptory.nazwa like "%nokia%"[/sql:1:055e26575d]
też mi się to przyda ale w tym momencie potrzebuję count'a, a jak wstawiam count zamiast nazwy to nie działa...
proszę pomóżcie

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Jabol
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


union Ci się przyda.
Go to the top of the page
+Quote Post
kris_
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 21.02.2003

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


dlaczego kombinujesz jak koń pod górke, zadaj po prostu kilka zapytań, umieść je w tablicach w php i pokaż wynik w wybranej kolejności.
Go to the top of the page
+Quote Post
kris_
post
Post #4





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 21.02.2003

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


Cytat
union Ci się przyda.

pod warunkiem ze to mysql>=4.0.0
Go to the top of the page
+Quote Post
Jabol
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


Cytat
Cytat
union Ci się przyda.

pod warunkiem ze to mysql>=4.0.0
warunków nie podano w poście więc mogę sie czyć wolny do ich własnej interpretacji, nieprawdaż ?
Go to the top of the page
+Quote Post
devoth
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 14.07.2003

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


z kilkoma zapytaniami w sumie nie problem, ale nie wiem jak zrobic to używając union..
to mnie właśnie ciekawi, czytałem o tym w innych postach ale mi zupełnie nie wyszło..
Go to the top of the page
+Quote Post
devoth
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 14.07.2003

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


hmm... mysql raczej < 4
Go to the top of the page
+Quote Post
FiDO
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


No to pozostaje Ci wywolanie kilku zapytan w petli.
Go to the top of the page
+Quote Post
adwol
post
Post #9





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

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


Cytat
Mam następujące tabele:
adaptory, akumulatorki, anteny, anteny_w, bluetooth, ... itd

tabele mają taka samą strukturę

Odpowiedź na zadane pytanie już dostałeś to ja jeszcze zapytam, po co masz tyle jednakowych tabel? Skoro schemat jest taki sam to nie lepiej i prościej trzymać to w jednej i dodać tylko jedno pole określające typ wpisu (adaptory, akumulatorki, anteny, anteny_w, bluetooth, czyli nazwy aktualnych tabel)?
Go to the top of the page
+Quote Post
devoth
post
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 14.07.2003

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


Adwol - w zupełności się z Tobą zgadzam, tyle że nie ja robiłem tą bazę, a jest tam już około 2000 rekordów. W sumie wczesniej mi to nie przeszkadzało i cały projekt jest już pod to zrobiony, problemy wynikły dopiero teraz.

trochę lipa, ale najwyżej będzie z pętlą

pozdrawiam i dzięki za pomoc
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 Aktualny czas: 22.08.2025 - 00:02