phpbar.de logo

Mailinglisten-Archive

[php] OT: SQL-Abfrage (Per PM)

[php] OT: SQL-Abfrage (Per PM)

Tim TConnect at gmx.net
Mon Mai 14 10:11:40 CEST 2007


Hallo Stephan,
Ich weiß nicht, ob Deine Anfrage noch aktuell ist, deswegen sende ich Dir
meine Antwort per PM und nicht in die Liste zurück.

> 
> LG,
> 
> Stephan
> 
> SELECT a. *
> >FROM table_A AS a, table_AxB AS x, table_B AS b
> WHERE a.id = x.a_id
> AND x.b_id = b.id

-- Trenne die Abfrage hier auf und gib testweise die entsprechende
Datensatz-ID von Tabelle A ein, bei dem Du genau weißt, dass diese in B
enthalten sein müßten.

Also:

AND b.id = 12345


Du müßtest dann zwei Datensätze erhalten. Wenn nicht, kann es sein, dass die
Datensätze in der Tabelle B noch gar nicht existieren oder in Tabelle X
falsche Zuweisungen vorliegen. Dies müßtest Du dann einzeln testen.




Und zum folgenden Konstrukt:


> AND (
> (
> a.name LIKE '%term1%'
> OR a.name2 LIKE '%term1%'
> OR b.name LIKE '%term1%'
> )
> AND (
> a.name LIKE '%term2%'
> OR a.name2 LIKE '%term2%'
> OR b.name LIKE '%term2%'
> )
> )

Das zweite AND ist meines Erachtens falsch. Du suchst z.B. nach 

a.name LIKE '%term1%' AND a.name LIKE '%term2%' -> Weil nichts anderes
beduetet dies, auch wenn die Klammern vorhanden sind und innerhalb der
Klammern OR-Ausdrücke stehen. Es kann aber nicht sein, dass a.name sowohl
term1 UND term2 beinhaltet. Das wäre ja fast so, als ob man eine
Postleitzahl sucht, die gleichzeitig 45123 UND 89234 ist. Das geht nicht.


Grüße
Tim


 


php::bar PHP Wiki   -   Listenarchive