ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
1123
1123
EMPFEHLEN
-
02.06.10 12:10 #1
Es geht um einen Online-Shop
Und ich versuche nun mehrere Kategorien aus der Datenbank auszulesen und auf einer Seite anzuzeigen.
Es gibt eine Tabelle für Produkte, eine für Kategorien und eine die beide miteinander verbindet.
Jetzt versuch ich z.B. alle Produkte anzuzeigen die in der Kategorie 14, 16, 17, 18, 19, 130 und 137 sind.
Nur leider legt mir meine Datenbankabfrage regelmäßig den Server kurzzeitig lahm - ich hab wohl einen rießigen Denkfehler dabei und brauche deswegen Hilfe.
PHP-Code:select * from products p, products_description pd, products_to_categories p2c
where p.products_id = pd.products_id
and pd.products_name != ""
and p.products_price != 0
and p2c.products_id = p.products_id
and p2c.categories_id = 14
or p2c.categories_id = 16
or p2c.categories_id = 17
or p2c.categories_id = 19
or p2c.categories_id = 130
or p2c.categories_id = 137
^-_-^Mata ne
Supercat1510
-
Es geht also um eine nxtCommerce basierende Datenbank.
bis hierher funktioniert das query auch bei mir sehr schnell
PHP-Code:select * from products p, products_description pd, products_to_categories p2c
where p.products_id = pd.products_id
and pd.products_name != ""
and p.products_price != 0
and p2c.products_id = p.products_id
Nun kommen aber die "Or's" welche alles andere ignorieren.
Wenn du OR verwendest, werden alle vorhergehenden ANDS ignoriert.. ->PHP-Code:or p2c.categories_id = 16
or p2c.categories_id = 17
or p2c.categories_id = 19
or p2c.categories_id = 130
or p2c.categories_id = 137
Dies sollte besser funktionieren.PHP-Code:AND
(
p2c.categories_id = 14
OR p2c.categories_id = 16
OR p2c.categories_id = 17
OR p2c.categories_id = 19
OR p2c.categories_id = 130
OR p2c.categories_id = 137
)
Kompletter Query neu:
PHP-Code:select * from products p, products_description pd, products_to_categories p2c
where p.products_id = pd.products_id
and pd.products_name != ""
and p.products_price != 0
and p2c.products_id = p.products_id
AND
(
p2c.categories_id = 14
OR p2c.categories_id = 16
OR p2c.categories_id = 17
OR p2c.categories_id = 19
OR p2c.categories_id = 130
OR p2c.categories_id = 137
)
Grüsse
Xloouch
Sich selber zu bekriegen ist der schwerste Krieg.
Sich selber zu besiegen ist der schönste Sieg!
-
02.06.10 12:42 #3
Danke - es funktioniert perfekt.
Diese Konstruktion einer Datenbankabfrage kannt ich bisher noch nicht - wieder was gelernt
^-_-^Mata ne
Supercat1510
-
Das Konstrukt ansich war schon OK.
Nur musst du dir die Problematik mit AND und OR veranschaulichen. Das mit den Klammern ist ein schönes Feature für eine klarere Struktur
Grüsse
Xloouch
Sich selber zu bekriegen ist der schwerste Krieg.
Sich selber zu besiegen ist der schönste Sieg!
-
Ich glaube der "in" Operator wäre an dieser Stelle etwas geschickter.p2c.categories_id = 14
OR p2c.categories_id = 16
OR p2c.categories_id = 17
OR p2c.categories_id = 19
OR p2c.categories_id = 130
OR p2c.categories_id = 137
http://dev.mysql.com/doc/refman/5.1/...operators.html
(relativ weit unten)In order to understand recursion, one must first understand recursion.
-
So neu ist es bestimmt nicht

Das hat mit der Präzedenz zu tun, die jede Sprache hat und sogar viele gleich in den primitiven Operatoren.
mySQL zum Beispiel: http://books.google.de/books?id=pCH1...page&q&f=false
PHP als weiteres Beispiel: http://books.google.de/books?id=Z8HV...page&q&f=false
Nenn es für das bessere Verständnis "Punkt-vor-Strich-Rechnung für mySQL" mit dem Unterschied, dass es um ganze Ausdrücke geht und nicht nur um das Rechnen
Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!
MfG, Zod
__________________
rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)
Ähnliche Themen
-
DB2 - eine Spalte in einer Tabelle auf unterschiedliche Werte prüfen
Von mirscho im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 19.03.10, 18:43 -
MySQL Select, mehrere Werte in einer Spalte
Von Cryog3n im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 15.05.09, 18:36 -
JavaScript: Inhalt einer Spalte einer Tabelle auslesen ("td"-Tag)
Von hamburger83 im Forum Javascript & AjaxAntworten: 9Letzter Beitrag: 01.10.08, 15:20 -
menge einer Spalte in einer Tabelle auslesen
Von Spacejumper im Forum PHPAntworten: 9Letzter Beitrag: 15.12.04, 12:25 -
JTable: mehrere Werte in einer Spalte
Von Crazy Bytes im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 7Letzter Beitrag: 10.05.04, 13:17





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren