astere Posted October 31, 2008 Report Posted October 31, 2008 Sveicināti! Datubāzē ir divas tabulas, pieņemsim: iela| numurs pieprasījums uz db: $query = "SELECT Iela,numurs FROM primarie_dati where Iela LIKE '%".$keywords[$i]."%' or numurs LIKE '%".$keywords[$i]."%' "; parāda visus datus ja meklētājā ierakstu ielas nosaukumu vai numuru un t.t.,nepieciešams pielikt klāt, ka paralēli visam skatīties tikai un vienīgi norādīto ielu ar numuru. Kā pareizāk būtu jāraksta? -atbildi neprasu, jo vajag tikai virzienu kur skatīties :). P.S. ideja tāda: a) rakstam "Maskavas" parāda visus ierakstus kas saaistīti ar maskavas ielu b) rakstam 600 parāda visas ielas kur numurs ir 600 c) rakstam: maskavas 600 parāda tikai maskavas 600 ierakstu pieņemsim, ka db izskatās šādi: id| iela | numurs
andrisp Posted October 31, 2008 Report Posted October 31, 2008 OR vietā AND. Ja kāds parametrs formā nav aizpildīts, tad kverijā to neliekam vispār.
bubu Posted October 31, 2008 Report Posted October 31, 2008 Īsti nesapratu jautājumu, bet nu kverijus uz tiem taviem trim punktiem raksta šādi: a) SELECT * FROM primarie_dati WHERE Iela = "Maskavas" b) SELECT * FROM primarie_Dati WHERE numurs = "600" c) SELECT * FROM primarie_Dati WHERE Iela = "maskavas" AND numurs = "600" Attiecīgi paņem tikai vienu no tiem atkarībā no tā, kurus datus ir ievadīts meklēt.
astere Posted November 1, 2008 Author Report Posted November 1, 2008 (edited) paldies par atbildēm, bet es jau šādi mēģināju, respektīvi ieliku: $query = "SELECT * FROM primarie_dati where Iela LIKE '%".$keywords[$i]."%' union SELECT * FROM primarie_dati where numurs LIKE '%".$keywords[$i]."%' union SELECT * FROM primarie_dati where Iela LIKE '%".$keywords[$i]."%' and numurs LIKE '%".$keywords[$i]."%' "; rezultāti: a) ierakstam "maskavas" - parāda visus ierakstus , kas ir saaistīti ar šo vārdu - DER b) ierakstam "600" - parāda visus ierakstus , kas saaistīti ar šo ciparu - DER c) ierakstam "maskavas 600" - parāda īsto ierakstu + parāda ierakstu ko nevajag parādīt, pieņemsim: "rūjienas 600" -nekam neder :/ , tieši tāpat bija ar parasto kveriju šķiet, ka tomēr vajadzēs abu tabulu ierakstus sagrūzt vienā tabulā :/ Edited November 1, 2008 by astere
bubu Posted November 1, 2008 Report Posted November 1, 2008 Kādus abu tabulu ierakstus? Kur tur ir divas tabulas? Tu jau tikai par vienu visu laiku stāsti - primarie_dati. Es tur kautkā nesaredzu kāpēc uz "maskavas 600" vajadzētu atgriez ierakstu "rūjienas 600". Jo "rūjienas" LIKE "maskavas 600" ir FALSE un "600" LIKE "maskavas 600" arī ir FALSE. Respektīvi kveriju WHERE daļa neatgriež TRUE uz šādu keywordu "maskavas 600".
Zandis Murāns Posted November 3, 2008 Report Posted November 3, 2008 Es nezinu, kas tev tā par datubāzi, bet postgrē es darītu tā. Select a."Iela", a."Numurs" From "Adreses" a where a."Iela" || ' ' || a."Numurs" like 'maskavas 600';
Recommended Posts