![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 14.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam grupowicze
![]() 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 |
|
|
![]() |
![]()
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.
|
|
|
![]()
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.
|
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]()
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.. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 14.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
hmm... mysql raczej < 4
|
|
|
![]()
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.
|
|
|
![]()
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)? |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 00:02 |