CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
21.02.2010, 10:09:28
|
Anfänger
|
|
Registriert seit: May 2006
Beiträge: 20
|
|
Problem mit einer Abfrage
Hallo,
ich hab ein Prob mit einer Abfrage, bekomme Sie nicht definiert.
Ich habe eine Tabelle mit einem Datum und einem Status. Das Abfrageergebnis soll mir einen Satz liefern mit Status >= 0 und Datum >= heute. Wenn es so etwas nicht gibt, und nur dann, soll als Ergebnis einen Satz liefern mit Status = 0 und Datum <= heute (nur das aktuelleste Datum davon).
In der DB tummeln sich Sätze mit allen möglichen "Datums" und Stati. Es gibt also mehrere mit Status 0 und auch mehrere mit Status > 0. In letzterem Fall aber (Status > 0) gibt es immer nur einen Satz >= heute, jedoch auch welche mit < heute. Beim Status 0 ist das Datum immer <= heute, nie > heute, davon gibts viele, aber ich brauch nur den aktuellsten.
Ich habs versucht mit:
SELECT * From mytable
WHERE (datum >= heute AND status > 0)
OR (datum < heute AND status = 0)
Ist sinngemäss so definiert, "heute" ist so im PHP Script definiert:
($heute = strftime("%Y-%m-%d %H:%M:%S");
Wobei ich die Auswahl des aktuellsten Datums noch nicht berücksichtigt hab, weil ich auch noch nicht weiß wie (MAX?).
Mir wurde klar, warum dies so nicht zum Ziel führt, nachdem ichs ausporbiert hab. Es liefert alle Stati, aber ich will nur den mit > 0 und nur wenns dazu keinen gibt, den aktuellsten 0er. Schön wäre ein IF ELSE, wenn die 1. WHERE-Klausel nix bringt und nur dann (ELSE) mach die 2. Klausel. Ich dachte auch schon an 2 Abfragen, die ich dann mit PHP auswerte, aber, ich hoffe, es geht auch mit einer Abfrage. Vielleicht gehts mit 2 kombinierten SELECT in einer Abfrage, habe dazu COALESCE und UNION erfolglos versucht.
Ich hab weitere Abfragen probiert, aber ohne Ergebnis. Ich bekomms nicht hin. Kann mir jemand helfen?
Gruß
Martina
Geändert von MWeltring (21.02.2010 um 10:34:08 Uhr)
Grund: Orthographie
|
21.02.2010, 10:46:35
|
Anfänger
|
|
Registriert seit: May 2008
Beiträge: 110
|
|
AW: Problem mit einer Abfrage
Hi,
da könnte Dir ein Case-Construct weiterhelfen.
Auch würde ich das aktuelle Datum nicht per PHP übergeben, das kann auch MYSQL.
Hiermal ein Gedankenanstoß, vllt hilft Dir das weiter, wenn Du das entsprechend Deiner Vorstellungen vervollständigst.
Code:
SELECT * From mytable
CASE
WHEN datum >= CURDATE() AND status > 0 THEN ...
WHEN datum < CURDATE() AND status = 0 THEN ...
ELSE ...
END
Gruß
schrubba
|
21.02.2010, 11:24:16
|
Anfänger
|
|
Registriert seit: May 2006
Beiträge: 20
|
|
AW: Problem mit einer Abfrage
Zitat:
Zitat von schrubba
Hi,
da könnte Dir ein Case-Construct weiterhelfen.
Auch würde ich das aktuelle Datum nicht per PHP übergeben, das kann auch MYSQL.
Hiermal ein Gedankenanstoß, vllt hilft Dir das weiter, wenn Du das entsprechend Deiner Vorstellungen vervollständigst.
Code:
SELECT * From mytable
CASE
WHEN datum >= CURDATE() AND status > 0 THEN ...
WHEN datum < CURDATE() AND status = 0 THEN ...
ELSE ...
END
Gruß
schrubba
|
Vielen Dank!
Aber, das ergibt immer noch 2 Sätze, die ich mit PHP auswerten muss. Ich wollt eigentlich versuchen, mit einer SQL-Abfrage gleich das eine Ergebnis zu bekommen.
Versucht hab ichs so:
SELECT * From mytable
CASE
WHEN datum >= CURDATE() AND status > 0 THEN 'case1'
WHEN datum < CURDATE() AND status = 0 THEN 'case2
END AS XYZ
Nun habe ich 2 Ausgaben, eine mit XYZ = case1 und eine mit XYZ = case2 (zusätzlich zu status und datum). Mach ich was falsch?
Danke
Gruß
Martina
|
21.02.2010, 11:29:57
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Problem mit einer Abfrage
Vlt. hilft Dir auch LIMIT weiter.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
21.02.2010, 11:36:16
|
Anfänger
|
|
Registriert seit: May 2006
Beiträge: 20
|
|
AW: Problem mit einer Abfrage
Zitat:
Zitat von vt1816
Vlt. hilft Dir auch LIMIT weiter.
|
Danke, aber LIMIT trifft keine Entscheidung darüber, welcher Satz angezeigt werden soll von den beiden.
Ich habe weitere Sätze zum Testen eingefügt. Es gibt beim Beispiel oben, das ich versuchte nun 2 bis x Sätze, einer mit XYZ = case1 (so vorhanden) und mehrere mit case2. Es sind aber auch andere Kombinationen möglich, je nachdem, was in der DB ist, z. B. nur case1 oder nur case2, das wäre ok. Aber bei case1 und case2 will ich nur case1 haben, das klappt mit LIMIT nicht,oder?
Gruß
Martina
|
21.02.2010, 11:49:34
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Problem mit einer Abfrage
Zitat:
Zitat von MWeltring
[...], das klappt mit LIMIT nicht,oder?
Gruß
Martina
|
Hast Du es mal probiert?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
21.02.2010, 12:10:00
|
Anfänger
|
|
Registriert seit: May 2006
Beiträge: 20
|
|
AW: Problem mit einer Abfrage
Zitat:
Zitat von vt1816
Vlt. hilft Dir auch LIMIT weiter.
|
ich hab noch ORDER BY datum DESC, status ASC und LIMIT 1 eingefügt, damit klappts. Danke!
Gruß
Martina
|
21.02.2010, 12:22:08
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Problem mit einer Abfrage
Zitat:
Zitat von MWeltring
Danke, aber LIMIT trifft keine Entscheidung darüber, welcher Satz angezeigt werden soll von den beiden.
|
vs.
Zitat:
Zitat von MWeltring
ich hab noch ORDER BY datum DESC, status ASC und LIMIT 1 eingefügt, damit klappts. Danke!
|
Klingt doch schon besser ...
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
21.02.2010, 17:19:19
|
Anfänger
|
|
Registriert seit: May 2006
Beiträge: 20
|
|
AW: Problem mit einer Abfrage
Hallo,
ch habe was übersehen, die Sache hat noch einen Haken. Zu dem Beschriebenen existiert auch noch ein Feld ID. Das bedeutet, ich brauche das für jede ID, also einen Satz je ID, wie schon beschrieben.
Daher geht es nicht mit LIMIT 1, ich brauche ja je ID einen Satz nach den beschriebenen Kriterien ausgesucht. Ich habe heute lange probiert und komme zu dem Schluss, dass es nun wohl auch nicht mit CASE klappt. Habs nicht hinbekommen und stehe wieder am Anfang.
Darf ich nochmals um Hilfe bitten?
Danke sagt
Martina
|
21.02.2010, 17:23:52
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Problem mit einer Abfrage
Helfen Dir GROUP/ HAVING weiter?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:24:57 Uhr.
|