SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.02.2009, 18:56:36
tina23 tina23 ist offline
Anfänger
 
Registriert seit: Feb 2009
Alter: 44
Beiträge: 1
select .... hilfe

Hallo erstmal.

Ich suche nach dem letzten Status 0 Wert einer UID und
dem dazugehörigen (selbe UID) Status 1 Wert vor dem letzten Status 0 Wert.



Das ist meine Tabelle:

mysql> select * from dznw;
+----+------+-----------------------+--------+
| id | uid | datum | status |
+----+------+-----------------------+--------+
| 1 | 1000 | 2009-01-24 08:01:01 | 1 | (1..... arbeitsbeginn)
| 2 | 1000 | 2009-01-24 10:12:15 | 0 | (0..... arbeitsende)
| 3 | 1000 | 2009-01-24 10:17:23 | 1 |
| 4 | 1000 | 2009-01-24 12:06:46 | 0 |
| 5 | 2222 | 2009-01-24 12:30:14 | 1 |
| 6 | 2222 | 2009-01-24 14:03:06 | 0 |
| 7 | 2222 | 2009-01-24 14:27:27 | 1 |
| 8 | 1000 | 2009-01-24 15:04:23 | 1 |
| 9 | 2222 | 2009-01-25 08:46:18 | 0 |
| 10 | 1000 | 2009-01-25 08:47:39 | 0 |
| 11 | 1000 | 2009-01-25 12:00:00 | 1 |
+----+------+---------------------+--------+
11 rows in set (0.00 sec)

Jetzt benutze ich folgende Abfrage:


mysql> SELECT `id`, UNIX_TIMESTAMP(`datum`) AS `timestamp` FROM `dznw` WHERE `status` = '0' ORDER BY `id` DESC LIMIT 1;
+----+------------+
| id | timestamp |
+----+------------+
| 10 | 1232869659 |
+----+------------+
1 row in set (0.01 sec)

Somit bekomme ich genau den Wert den ich suche.



Jetzt zu meinem PROBLEM:
Aber wenn ich jetzt nach dem letzten Status 1 Wert „vor“ dem letzten Status 0 Wert suche weiß ich nicht wie das funktionieren soll.
Diese Abfrage funktioniert nur wenn der letzte Status Wert eine 0 enthält,


mysql> SELECT `id`, UNIX_TIMESTAMP(`datum`) AS `timestamp` FROM `dznw` WHERE `status` = '1' AND `id` < 35 ORDER BY `id` DESC LIMIT 1;
+----+------------+
| id | timestamp |
+----+------------+
| 11 | 1232881200 |
+----+------------+
1 row in set (0.00 sec)

Was mach ich falsch
Mit Zitat antworten
  #2  
Alt 20.02.2009, 23:03:04
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: select .... hilfe

Da du den Eintrag mit Status 1 "vor" dem letzten Eintrag mit Status 0 haben willst, müsstest du den Datumswert mit einberechnen. Das Datum beim Status 1 muß ja kleiner als das Datum mit Satus 0 sein.
PHP-Code:
$sql "SELECT `id`, UNIX_TIMESTAMP(`datum`) AS `timestamp` FROM `dznw` WHERE  `id` = '$id' and `status` = '1' and `datum`< '$timestamp' LIMIT 1"
$id und $timestamp müsstest du aus der vorherigen Anfrage übernehmen.

Geändert von urvater (20.02.2009 um 23:03:59 Uhr)
Mit Zitat antworten
  #3  
Alt 21.02.2009, 07:33:42
Crisps Crisps ist offline
Junior Member
 
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
AW: select .... hilfe

Zitat:
Zitat von tina23 Beitrag anzeigen
Hallo erstmal.
Hallo

Zitat:
Zitat von tina23 Beitrag anzeigen
Ich suche nach dem letzten Status 0 Wert einer UID und
dem dazugehörigen (selbe UID) Status 1 Wert vor dem letzten Status 0 Wert.
Code:
SELECT t1.uid
     , (SELECT UNIX_TIMESTAMP(MAX(datum))
          FROM dznw
         WHERE uid = t1.uid
           AND datum < t1.datum
           AND status = 1) AS arbeitsbeginn
     , UNIX_TIMESTAMP(t1.datum) AS arbeitsende
  FROM dznw AS t1
 WHERE t1.uid = 1000
   AND t1.status = 0
ORDER 
    BY t1.datum DESC 
 LIMIT 1;
= Die jeweilige UID nach der Du suchst.

Sag mal, UID 2222 hat ja ne ziemlich lange Arbeitszeit. :D

2222 | 2009-01-24 14:27:27 | 1 |
2222 | 2009-01-25 08:46:18 | 0 |

Geändert von Crisps (21.02.2009 um 07:51:26 Uhr)
Mit Zitat antworten
  #4  
Alt 23.02.2009, 07:42:03
Crisps Crisps ist offline
Junior Member
 
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
AW: select .... hilfe

Ich seh grad erst, dass meine oben gepostete Abfrage das falsche Ergebniss liefert wenn es noch keinen Eintrag für das Arbeitsende gibt.

Versuchs also mal mit dieser Query:
Code:
SELECT t1.uid
     , MAX(t1.datum) AS arbeitsbeginn
     , MAX(t2.datum) AS arbeitsende
  FROM dznw AS t1
LEFT OUTER
  JOIN dznw AS t2
    ON t2.uid = t1.uid 
   AND t2.status = 0 
   AND t2.datum > (SELECT MAX(datum) 
                     FROM dznw 
                    WHERE uid = t1.uid
                      AND status = 1)
 WHERE t1.status = 1 
GROUP
    BY t1.uid
ORDER 
    BY arbeitsbeginn DESC;
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
select in select verschachteln DerSchatten MySQLi/PDO/(MySQL) 7 19.12.2007 22:22:13
sql Abfrage brauche Hilfe Join oder ??? illetuffi MySQLi/PDO/(MySQL) 1 08.12.2005 11:52:00
Hilfe mit SELECT andi303 MySQLi/PDO/(MySQL) 7 06.09.2005 14:58:50
To Many Connections ProGamer11 PHP Grundlagen 0 19.06.2003 00:52:56
Ich willst jetzt wissen - Select * oder nicht Select * CyberAge PHP Grundlagen 22 13.08.2002 18:40:46


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:48:26 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt