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 12-01-2009, 21:14
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard kleinste Zeit pro User

Hallo zusammen,

ich hab grad ne Denkblockade, vielleicht kann mir wer weiterhelfen,
Ich habe zwei Tabellen
Tabelle user und Tabelle zeiten
welche über die User_ID verbunden sind. Jetzt ist es so, dass in der Zeiten tabelle ein User mit mehreren Zeiten drinstehen kann und ich in der Ausgabe nur jeweils die beste Zeit des Users stehen haben möchte, so wie ich es jetzt mache funktioniert es nicht, sprich total ist nicht die Summe aus hin und zurück, Mir ist auch klar wieso das so ist(Min(...)) aber ich komm nicht drauf, wie ich es machen soll
PHP-Code:
SELECT
 DISTINCT
(s.userID),
 
u.name as name,
 
DATE_FORMAT(s.date,'%d.%m.%Y') AS date,
 
TIME_FORMAT(s.journey_there'%i:%s') AS journey_there,
 
TIME_FORMAT(s.return_journey'%i:%s') AS return_journey,
 
MIN(TIME_FORMAT(total'%i:%s')) AS total
FROM
 
#__skifftest s,
 #__users u,
 #__additional_info a
WHERE
 YEAR
(s.date) = ".$year." AND
 
a.gender '".$gender."' AND
 
s.userID u.id AND
 
u.id a.user_ID
GROUP BY
 s
.userID
ORDER BY
 s
.total ASC 
Mit Zitat antworten
  #2 (permalink)  
Alt 13-01-2009, 08:24
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also erstmal gruppierst Du nicht nach allen single cols, d.h. Du kannst unerwartete ergebnisse bekommen, dann würde ich eher date_format(MIN()) machen

Steht nun im DB Feld total die differenz drin oder willst Du die auch noch berechnen??
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #3 (permalink)  
Alt 13-01-2009, 13:27
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

in total steht die summe der beiden Felder journey_there und return_journey, ist zwar eigentlich unnötig, aber egal.
was du mir mit dem Group By sagen möchtest versteh ich nicht, ich kann doch nicht nach allen Spalten, die ich selektieren gruppieren, sonst kommen ja wieder mehrere Pro User raus?!
Mit Zitat antworten
  #4 (permalink)  
Alt 13-01-2009, 19:46
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

naja aber du selektierst zB ein datum und kannst bei deiner gruppierung irgendein datum bekommen, das aber nicht unbedingt zum gefundenen aggregat gehört
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #5 (permalink)  
Alt 13-01-2009, 21:27
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also irgendwie komm ich immer noch nicht dahinter, was du mir sagen willst. Ich fühl mich grad wie n Anfänger..
Ich möchte eine Liste haben, die nach der gesamtzeit geordnet ist und wo jeder User mit seiner besten Zeit drin steht, wenn ich nach mehr als der user_ID gruppiere, bekomme ich immer mehr Zeilen zurück, als ich eigentlich haben will, denn alle anderen Werte unterscheiden sich ja wieder!?
Mit Zitat antworten
  #6 (permalink)  
Alt 14-01-2009, 08:27
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok wenn Du nur den user brauchst warum selektierst Du dann ein datum, ich meinte lediglich wenn Du nicht nach dem datum sortierst und es mehrere verschiedene gibt, die zu deiner gruppierung passen, dann bekommst Du nicht unbedingt das datum, dass auch zu deiner aggregatsfunktion passt. In deinem fall bekommst Du dann min(total) und ein datum das zu deinem user passt, aber nicht unbedingt zum min(total).

haste es mal so probiert:

Code:
SELECT
 s.userID,
 u.name,
 TIME_FORMAT(MIN(s.journey_there-s.return_journey) '%i:%s') AS total
FROM
 #__skifftest s,
 #__users u,
 #__additional_info a
WHERE
 YEAR(s.date) = ".$year." AND
 a.gender = '".$gender."' AND
 s.userID = u.id AND
 u.id = a.user_ID
GROUP BY
 s.userID, u.name
ORDER BY
3 ASC
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #7 (permalink)  
Alt 14-01-2009, 13:39
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also so bekomm ich n leeres Ergebnis..
ich brauch eigentlich alles was in der Abfrage drin ist, damit das ganze nachher in etwa so aussieht wie im Anhang. Da sieht man auch den Fehler der Auftritt auf Platz zwei. Die totale Zeit ist zwar richtig eingeordnet auch dem richtigen User, aber die Hin und Rückzeit sind halt falsch und dafür brauch ich ne Lösung. Datum muss auch erhalten bleiben, damit man weiß, wann das passiert ist. Ist so eine Abfrage überhaupt möglich?
Angehängte Grafiken
Dateityp: jpg tabelle.jpg (27,4 KB, 67x aufgerufen)
Mit Zitat antworten
  #8 (permalink)  
Alt 14-01-2009, 14:15
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja hin und rückzeit sind genau wegen Deiner gruppierung falsch...
löse das über Join mit einem subselect
wobei Du das max(total) und die userid im subselect holst und dann deine user tabelle referenzierst über die user id ...
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

Geändert von MelloPie (14-01-2009 um 14:18 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 14-01-2009, 17:57
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

so...des Rätsels Lösung
PHP-Code:
SELECT
 u
.name,
 
DATE_FORMAT(s.date,'%d.%m.%Y') AS date,
 
TIME_FORMAT(s.journey_there'%i:%s') AS journey_there,
 
TIME_FORMAT(s.return_journey'%i:%s') AS return_journey,
 
TIME_FORMAT(s.total'%i:%s') AS total
FROM 
 
#__skifftest s,
 #__users u,
 #__additional_info a
WHERE
 total 
= (SELECT 
        MIN
(total
       
FROM 
        jos_skifftest 
       WHERE 
        YEAR
(s.date) = ".$year." AND
        
userID s.userid) AND
 
a.gender '".$gender."' AND
 
YEAR(s.date) = ".$year." AND
 
s.userID u.id AND
 
u.id a.user_ID
ORDER BY 
 total ASC 
Danke MelloPie
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 04:21 Uhr.