SQL Where In Array OR

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • eagle275
    antwortet
    erm -.- ich mach dann mal den Dolmetscher ...

    sein "funzt nicht" heißt in dem Fall -> die SQL-Abfrage liefert nicht die erwarteten Ergebnisse

    und das liegt daran, dass du die einzelnen WHERE-Klauseln nicht sinnvoll zusammengefasst hast

    die per AND verbundenen Teile wirken "zusammen", während OR diese Verbindung aufhebt und separat betrachtet wird .
    du müsstest also die 3 Teile, die per OR verbunden sind einmal per Klammer zusammenfassen
    nach dem Muster
    where a and b and (c or d or e) AND f .....

    eventuell musst du im mysql-Handbuch mal die Operator-Präzedenz nachschlagen, es kann sogar sein, dass OR dein IN beeinflußt und du demzufolge nochmal klammern musst

    ansonsten hilft es in solchen Fällen fast immer ,wenn du dein Script die Abfrage mit Werten befüllen lässt und dann AUSGIBST (DIE ABFRAGE !!)-

    die Ausgabe im Browserfenster wird kopiert und im SQL-Fenster von phpmyadmin ausgeführt ...
    Zuletzt geändert von eagle275; 19.07.2011, 14:37.

    Einen Kommentar schreiben:


  • wahsaga
    antwortet
    Was soll uns das jetzt sagen?

    Einen Kommentar schreiben:


  • AmicaNoctis
    antwortet
    Zitat von engine Beitrag anzeigen
    Diese Methode wird allgemein als die einfachste und schnellste aufgefasst.
    Traditionelle Methode: Kopieren und Einfügen.
    Was möchtest du damit sagen? Ich versteh's nicht.

    Einen Kommentar schreiben:


  • engine
    antwortet
    Zitat von AmicaNoctis Beitrag anzeigen
    Hallo und willkommen im Forum!

    Bitte Forenregeln (= Grundlagen zur Problembehebung) beachten und vollständige Fehlermeldungen zitieren. „Funktioniert nicht“ ist keine Fehlerbeschreibung und lässt uns sinnlos im Dunkeln tappen. Daher landen „funzt nicht“-Thread gerne mal auf dem Abstellgleis.

    Gruß,

    Amica
    Diese Methode wird allgemein als die einfachste und schnellste aufgefasst.
    Traditionelle Methode: Kopieren und Einfügen. Eine gut gestellte Frage ist schon halb beantwortet. Danke

    Einen Kommentar schreiben:


  • AmicaNoctis
    antwortet
    Hallo und willkommen im Forum!

    Bitte Forenregeln (= Grundlagen zur Problembehebung) beachten und vollständige Fehlermeldungen zitieren. „Funktioniert nicht“ ist keine Fehlerbeschreibung und lässt uns sinnlos im Dunkeln tappen. Daher landen „funzt nicht“-Thread gerne mal auf dem Abstellgleis.

    Gruß,

    Amica

    Einen Kommentar schreiben:


  • engine
    hat ein Thema erstellt SQL Where In Array OR.

    SQL Where In Array OR

    Hallo,

    ich sitze an einem Projekt und komme nun nicht weiter vor folgendem Problem:

    Die SQL Abfrage funktioniert auf unseren localhost (MySql Server Version: 5.5.11) jedoch nicht auf auf dem 1und1 (MySql Server Version:5.0)

    Die SQL-abfrage scheitert, sobald "OR p.festservice_b IN (Array) OR p.festservice_c IN (Array)"nach der p.festservice_a steht.

    u.Dienste_budget, u.Dienste_gebiet und u.Dienste_service sind Datentypen

    Wäre toll, wenn jemand bestätigen oder dementieren könnte dies für mich. Danke

    PHP-Code:
          public function getProducts($userid$sort false)
          {
              global 
    $db;
              
             (
    $sort) ? $order $sort $order "p.date DESC";
                        
              
    $where "WHERE NOT EXISTS (SELECT * FROM utransactions AS t WHERE t.user_id = '{$userid}' AND t.product_id = p.token)"
              
    "\n AND p.approved='yes'"
              
    "\n AND p.status='1'"
              
    "\n AND u.uid = '" $userid "'"
              
    "\n AND p.budget_id IN (u.Dienste_budget)"
              
    "\n AND p.gebiet_id IN (u.Dienste_gebiet)"          
              
    "\n AND (p.festservice_a IN (u.Dienste_service)"
              
    "\n OR p.festservice_b IN (u.Dienste_service)"
              
    "\n OR p.festservice_c IN (u.Dienste_service))";
              
              
    $sql "SELECT p.*,"
              
    "\n DATE_FORMAT(p.date, '%d.%m.%Y') as created," 
              
    "\n DATE_FORMAT(p.festdatum, '%d.%m.%Y') as festdate,"
              
    "\n (TO_DAYS(NOW()) - TO_DAYS(p.festdatum)) as days,"
              
    "\n TO_DAYS(DATE_ADD(p.festdatum,INTERVAL -1 DAY))- TO_DAYS(NOW()) as expiry"
              
    "\n FROM products AS p, usersettings AS u " $where " ORDER BY " $order;
              
    $row $db->fetch_all($sql);
              
              return 
    $row;

          } 
Lädt...
X