Warum funktioniert die Abfrage nicht ???
Bernd
- datenbank
Hallo,
Warum funktioniert diese abfrage nicht:
select * from tabelle_1 tab1 , tabelle_2 tab2 where tab1.obj_head like '%suchstring%' or tab1.obj_str like '%suchstring%' or tab1.obj_ort like '%suchstring%' and tab1.obj_category_id = 1 and tab1.obj_id = tab2.obj_id
Die Syntax ist richtig, also es gibt keinen Datenbankfehler.
Leider sind auch Objekte aus den anderen Kategorien (obj_category_id) auch bei der Ausgabe. Woran kann das liegen ?
mfg
Bernd
Hallo Bernd,
Warum funktioniert diese abfrage nicht:
Was verstehst du unter "funktioniert [...] nicht"? Verhalten soll/ist?
select *
http://dclp-faq.de/q/q-sql-select.html
from tabelle_1 tab1 , tabelle_2 tab2
meinst du vielleicht "FROM tabelle_1 as tab1, tabelle_2 as tab2"? Das "as" ist afaik nicht optional.
where tab1.obj_head like '%suchstring%' or tab1.obj_str like '%suchstring%' or tab1.obj_ort like '%suchstring%' and tab1.obj_category_id = 1 and tab1.obj_id = tab2.obj_id
versuch es mal nach "where" eine öffnende Klammer hinzumachen und vor dem ersten "and" eine schließende.
Leider sind auch Objekte aus den anderen Kategorien (obj_category_id) auch bei der Ausgabe. Woran kann das liegen ?
Den Satz versteh ich nicht so ganz (möglicherweise liegt es an "select *") - um genaueres zu sagen hilft vielleicht die Tabellenstruktur.
Grüße aus Nürnberg
Tobias
Hallo,
SQL-Statements, die in einer 'Wurscht' geschrieben sind, sind praktisch nicht zu lesen bzw. zu verstehen.
Deshalb versuche ich einmal etwas grundsätzliche Struktur durch Formatierung reinzubringen.
select * from tabelle_1 tab1 , tabelle_2 tab2
where tab1.obj_head like '%suchstring%'
or tab1.obj_str like '%suchstring%'
or tab1.obj_ort like '%suchstring%'
and tab1.obj_category_id = 1
and tab1.obj_id = tab2.obj_id
Die Syntax ist richtig, also es gibt keinen Datenbankfehler.
Also funktioniert sie;-)
Leider sind auch Objekte aus den anderen Kategorien (obj_category_id) auch bei der Ausgabe. Woran kann das liegen ?
Das liegt imho daran, daß Du nicht vorgibst, wie die Bedingungen zueinander priorisiert werden sollen. Das kannst Du durch entsprechende Klammersetzung erreichen. Ich vermute daß die Kategorie und die Tabellenverbidnung immer gelten soll, und zusätzlich noch mindestens eine der like-Bedingungen.
BTW: Dir ist hoffentlich bewußt, daß "like '%suchstring%'" wirklich viel Aufwand für die Datenbank bedeutet, die Performance dadurch in der Regel nicht wirklich berauschend ist (naja bei wirklich wenigen Datensätzen wird es nicht so dramatisch sein).
Grüße
Klaus