astere Posted October 31, 2008 Report Share 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 Link to comment Share on other sites More sharing options...
andrisp Posted October 31, 2008 Report Share Posted October 31, 2008 OR vietā AND. Ja kāds parametrs formā nav aizpildīts, tad kverijā to neliekam vispār. Link to comment Share on other sites More sharing options...
bubu Posted October 31, 2008 Report Share 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. Link to comment Share on other sites More sharing options...
astere Posted November 1, 2008 Author Report Share 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 Link to comment Share on other sites More sharing options...
bubu Posted November 1, 2008 Report Share 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". Link to comment Share on other sites More sharing options...
Zandis Murāns Posted November 3, 2008 Report Share 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'; Link to comment Share on other sites More sharing options...
Recommended Posts