tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
1123
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von supercat1510
    supercat1510 supercat1510 ist offline Mitglied Gold
    Registriert seit
    Nov 2002
    Ort
    Nähe Altötting (Bayern)
    Beiträge
    128
    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 pproducts_description pdproducts_to_categories p2c 
                where p
    .products_id pd.products_id 
                
    and pd.products_name != "" 
                
    and p.products_price != 
                
    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

  2. #2
    Registriert seit
    Jul 2003
    Ort
    Ramsen (CH)
    Beiträge
    473
    Es geht also um eine nxtCommerce basierende Datenbank.

    bis hierher funktioniert das query auch bei mir sehr schnell
    PHP-Code:
    select from products pproducts_description pdproducts_to_categories p2c 
                where p
    .products_id pd.products_id 
                
    and pd.products_name != "" 
                
    and p.products_price != 
                
    and p2c.products_id p.products_id 

    Nun kommen aber die "Or's" welche alles andere ignorieren.

    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 
    Wenn du OR verwendest, werden alle vorhergehenden ANDS ignoriert.. ->

    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

    Dies sollte besser funktionieren.

    Kompletter Query neu:
    PHP-Code:
    select from products pproducts_description pdproducts_to_categories p2c 
                where p
    .products_id pd.products_id 
                
    and pd.products_name != "" 
                
    and p.products_price != 
                
    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!

  3. #3
    Avatar von supercat1510
    supercat1510 supercat1510 ist offline Mitglied Gold
    Registriert seit
    Nov 2002
    Ort
    Nähe Altötting (Bayern)
    Beiträge
    128
    Danke - es funktioniert perfekt.

    Diese Konstruktion einer Datenbankabfrage kannt ich bisher noch nicht - wieder was gelernt
     
    ^-_-^Mata ne
    Supercat1510

  4. #4
    Registriert seit
    Jul 2003
    Ort
    Ramsen (CH)
    Beiträge
    473
    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!

  5. #5
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    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
    Ich glaube der "in" Operator wäre an dieser Stelle etwas geschickter.
    http://dev.mysql.com/doc/refman/5.1/...operators.html
    (relativ weit unten)
     
    In order to understand recursion, one must first understand recursion.

  6. #6
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    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

  1. DB2 - eine Spalte in einer Tabelle auf unterschiedliche Werte prüfen
    Von mirscho im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 19.03.10, 18:43
  2. MySQL Select, mehrere Werte in einer Spalte
    Von Cryog3n im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 15.05.09, 18:36
  3. JavaScript: Inhalt einer Spalte einer Tabelle auslesen ("td"-Tag)
    Von hamburger83 im Forum Javascript & Ajax
    Antworten: 9
    Letzter Beitrag: 01.10.08, 15:20
  4. menge einer Spalte in einer Tabelle auslesen
    Von Spacejumper im Forum PHP
    Antworten: 9
    Letzter Beitrag: 15.12.04, 12:25
  5. JTable: mehrere Werte in einer Spalte
    Von Crazy Bytes im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 7
    Letzter Beitrag: 10.05.04, 13:17