Anzeige:
Ergebnis 1 bis 7 von 7

Thema: mysql WHERE ohne Parameter

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.09.2004
    Beiträge
    12

    mysql WHERE ohne Parameter

    Hallo zusammen,

    folgender Befehl ist in einem Script hinterlegt:

    Code:
    SELECT Adresse FROM Kunden WHERE KundenID = '$KUNDENID'
    klappt auch wunderbar. Nun möchte ich aber, dass wenn keine Auswahl getroffen wird, alle Kunden angezeigt werden. Ich bekomme dann aber eine SQL Fehlermeldung, da kein Wert nach WHERE angegeben wurde.

    Gibt es ein Weg, den Befehl WHERE wieder auszuhebeln, ohne das man den eigentlichen Befehl entfernt.

    Dachte wenn ich ein WHERE KundenID = '$KUNDENID' angebe und die Variable ist leer, dass er dann alle nimmt, aber ist nicht so

    Alternativ könnte ich bei der Abfrage ja auch ein Wert hinterlegen, der dann bei der Übergabe der Variable in die WHERE Bedingung mit reingenommen wird. Ein % hat auch nicht geklappt

    Bitte Hilfe. Danke.
    Geändert von Mathew (16-08-2006 um 16:38 Uhr)

  2. #2
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Wenn die Abfrage statt = like benutzt, kann man mit % arbeiten, allerdings ist der Vergleich mit like oft aufwendiger als der mit =.
    Das Ziel ist das Ziel.

  3. #3
    Registrierter Benutzer
    Registriert seit
    18.09.2004
    Beiträge
    12
    kraz, habs gerade getestet, dass ist genau das was ich brauchte.

    Nun kann ich angeben, dass bei keiner Eingabe des Benutzers automatisch ein % als Variable gespeichert wird und dieses dann auch im SELECT Befehl die Bedingung für dieses Feld aushebelt.

    Danke Dir.
    Geändert von Mathew (16-08-2006 um 16:50 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    29.10.2005
    Beiträge
    10

    Nicht wirklich schnell

    hmm, wie gesagt, das ist nicht wirklich performant, lass lieber die komplette WHERE-CLAUSE weg, wenn keine Auswahl getroffen wurde.

    Gruß

    Jörn

  5. #5
    Registrierter Benutzer
    Registriert seit
    26.12.2002
    Ort
    Matrix
    Beiträge
    194
    SELECT Adresse FROM Kunden WHERE KundenID = '$KUNDENID' or kundenid = ''

    umgeht das LIKE.

    -j

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Meiner Meinung nach würde ich es schon beim Zusammensetzten des SQL-Befehls berücksichtigen, z.B.
    in php:
    PHP-Code:
    $sql sprintf("SELECT Adresse FROM Kunden%s", ($KUNDENID sprintf(" WHERE KundenID = %d"$KUNDENID) : "")); 
    PHP-Code:
    $sql  sprintf("SELECT Adresse FROM Kunden");
    $sql .= $KUNDENID sprintf(" WHERE KundenID = %d"$KUNDENID) : ""
    Pingu
    Geändert von Pingu (17-08-2006 um 09:19 Uhr)
    Homepage: www.pingu.info

  7. #7
    Registrierter Benutzer
    Registriert seit
    18.09.2004
    Beiträge
    12
    danke für die vielen Antwortmöglichkeiten

    Also mit dem 'like' bekomme ich alles so hin wie ich brauche. Da es sich um eine komplette Netzwerkkassensoftware handelt die schon im Einsatz ist *stolz* fehlt mir auch die Zeit das ganze vielleicht so zu optimieren wie es eigentlich richig wäre.

    Performance spielt eigentlich keine Rolle, da dieses Script nur aufgerufen wird, wenn der Einkaufsleiter seine automatische Bestellvorschlagsliste der einzelnen Filialen morgens um 9:00 Uhr sehen will.

    Bevor ich so ein Script verbessere, sind sicher andere Scripte wie Umsatzstatistik oder Warenwert pro Filaile interessanter, die laufen nämlich die ganze Nacht durch Leider programmiere ich so wie ich denke, also nicht immer optimal, komme aber zum Ziel.

    Ab dem 30. Shop (zur Zeit 18) wird dann die Nacht zu kurz, dann entweder die Scripte verbessern (wo noch ne Menge optimiert werden kann) oder nen schnelleren Server verwenden

    Aber die Frage hier wurde durch mwanaher genau so beantwortet, wie ich sie brauchte

    Also Danke nochmal für Eure Hilfe.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •