php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-05-2007, 12:38
case
 Registrierter Benutzer
Links : Onlinestatus : case ist offline
Registriert seit: Mar 2007
Beiträge: 265
case ist zur Zeit noch ein unbeschriebenes Blatt
case eine Nachricht über ICQ schicken
Standard Control Flow Functions in Where-Clause

Hallo zusammen...


ich habe da ein Problem.


Ich habe in meinem Script eine Variable ($iBedingung) wo entweder 0, 1 oder 2 drinsteht.

Meine Tabelle sieht von der Strucktur folgendermaßen aus.
id
vergleichswert
timestamp



nun habe ich mein SELECT, bzw. meinen Ansatz:

PHP-Code:
$sQuery 'SELECT id FROM vergleichstabelle
           WHERE timestamp < UNIX_TIMESTAMP()
           CASE '
.$iBedingung.
               WHEN 1 THEN vergleichswert BETWEEN 1 AND 28
               WHEN 2 THEN vergleichswert BETWEEN 19 AND 35
           END
           ORDER BY vergleichswert;'

Ich hoffe ihr habt verstanden was ich brauche.

Wenn in $iBedingung eine 1 steht soll der vergleichswert zwischen 1 und 28 liegen, wenn $iBedingung 2 ist dann zwischen 19 und 35 und wenn $iBedingung 0 ist, so ist der Vergleichswert egal.

Ich weiß, ich könnte mir einfach vorher auch einen Query generieren je nachdem wie $iBedingung ist, ich brauche das gleiche vom prinzip her aber noch an einer anderen Stelle, desswegen würde ich das in diesem Falle auch gerne über eine Control Flow Function machen.


Vielen Dank schonmal im Voraus
case
Mit Zitat antworten
  #2 (permalink)  
Alt 04-05-2007, 12:45
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Und wo ist jetzt das Problem? Kann keine Frage entdecken.
Mit Zitat antworten
  #3 (permalink)  
Alt 04-05-2007, 12:49
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$sql 'CASE '.$bedingung'
WHEN 1 THEN SELECT id FROM table WHERE timestamp<UNIX_TIMESTAMP AND wert BETWEEN 1 AND 28;
WHEN 2 THEN ...
END'

Habe das auf dem Web in dieser Form gefunden. Vielleicht hilfts.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #4 (permalink)  
Alt 04-05-2007, 13:08
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich meine, dass man einen case-Block auch innerhalb des Queries setzen kann, so wie er das vorhat. Allerdings fehlt bei ihm die Verknüpfung zwischen den beiden Bedingungen. Leider scheint er ja immer noch keine Frage stellen zu wollen.
@Topicstarter: Was ist denn nun mit Deinem Ansatz? Mal im PMA ausprobiert? Resultat?

LG
Mit Zitat antworten
  #5 (permalink)  
Alt 04-05-2007, 14:02
case
 Registrierter Benutzer
Links : Onlinestatus : case ist offline
Registriert seit: Mar 2007
Beiträge: 265
case ist zur Zeit noch ein unbeschriebenes Blatt
case eine Nachricht über ICQ schicken
Standard

@jahlives
Erstmal danke.
Das Problem ist aber, dass ich das so auch hinbekommen hätte.

Ich habe halt nur noch einen anderen Fall, wo ich einen Komplexeren Query habe. Wenn ich diesen Query mehrmals hintereinander mit winzigen änderungen ein ein Case reinpacke habe ich TONNEN von SQL-Code.

Von daher würde ich dir Bedingung wirklich in der WHERE Bedingung umsetzen.



Ich weiß leider nicht wie ich die Verbindung machen kann.

ich habe es mit

PHP-Code:
timestamp UNIX_TIMESTAMP()
CASE 
'.$iBedingung.' 
               
WHEN 1 THEN AND vergleichswert BETWEEN 1 AND 28
               WHEN 2 THEN 
AND vergleichswert BETWEEN 19 AND 35
           END 
probiert, aber das funktioniert natürlich nicht, das ist ja auch eigentlich ziemlicher unsinn, aber das naheliegenste was mir eingefallen ist.

Meine Frage ist:

Wie kann ich die CASE-Funktion in einer WHERE-Bedingung einsetzen wenn ich da vorher schon eine andere Bedingung drin habe. Bzw. wie bekomme ich die richtig verknüpft

Natürlich habe ich das schon im PMA ausprobiert und natürlich einen syntaxerror zurückbekommen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:42 Uhr.