php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.09.2011, 09:00  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Ja, das geht. Schau mal in tr0y's Beitrag, da findest du so einen cast.

Schön ist aber was anderes
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.09.2011, 10:29  
Erfahrener Benutzer
 
Registriert seit: 04.07.2003
Beiträge: 359
PHP-Kenntnisse:
Fortgeschritten
Sirke befindet sich auf einem aufstrebenden Ast
Standard

Ich habe gerade mal ne Lösung in einer Abfrage ausprobiert, aber die Performance sollte nicht besonders gut sein, sobald die Datenbank eine gewisse Größe erreicht:
PHP-Code:
SELECT u1.log_useridSUMa.action_value )
FROM actions AS auserlogs AS u1userlogs AS u2
WHERE u1
.log_userid u2.log_userid
  
AND u1.log_datetime u2.log_datetime
  
AND u1.log_type LIKE "Anmeldung"
  
AND u2.log_type LIKE "Abmeldung"
  
AND u2.log_datetime = (
    
SELECT MINu3.log_datetime )
    
FROM userlogs AS u3
    WHERE u3
.log_userid u1.log_userid
      
AND u3.log_datetime u1.log_datetime
      
AND u3.log_type LIKE "Abmeldung"
  
)
  AND 
a.action_datetime BETWEEN u1.log_datetime AND u2.log_datetime
GROUP BY u1
.log_userid 
Ich denke die Felder sollten selbsterklärend sein, aber ich habe DateTime Typen benutzt, damit die Abfrage nicht so lang ist. Möchtest du das eben mit den einzelnen Date und Time Typen machen, musst du das ganze an jeder Stelle Casten, indem du folgende Funktion benutzt und natürlich auf die entsprechenden Felder anpasst:
PHP-Code:
CASTCONCATu1.log_date" "u1.log_time ) AS DATETIME 
Solltest du diesen etwas komplizierteren Vorschlag nutzen, wäre es nett, wenn du mal was zu der Performance auf einer großen Datenmenge sagen könntest! Das ganze ist auch nicht in Bezug auf evtl auftretende Fehler getestet, wie z.B. fehlende Einträge o.ä.
Sirke ist offline   Mit Zitat antworten
Alt 13.09.2011, 14:20  
Benutzer
 
Registriert seit: 19.03.2009
Beiträge: 32
watchdogg befindet sich auf einem aufstrebenden Ast
Standard

Hallo nochmals,

Meine Query hat jetzt folgenden Aufbau und funktioniert auch:


PHP-Code:
$sql="SELECT month(b_datum) AS Monat, year(b_datum) AS Jahr, b_aktion AS Aktion, SUM(b_AktionWert) AS Wert
      FROM tableB
      WHERE month(b_datum)='"
.$monat."' AND year(b_datum)='".$jahr."' 
      AND CAST(concat(b_datum, ' ', b_start) AS DATETIME)      
      BETWEEN '"
.date_format($arrAN[0], 'Y-m-d H:i:s')."'
      AND '"
.date_format($arrAB[0], 'Y-m-d H:i:s')."'"

      
.$dynQry."

      GROUP BY b_Aktion" 
or die(mysql_error()); 
Wie zu erkennen kommen meine Vergleichswerte aus den Arrays $arrAN[] und $arrAB[].

Die Stringvariable "$dynQry" soll nun entsprechend der Arraygrösse zusammengebastelt werden.

So in der Art:

PHP-Code:
$dynQry='';

for(
$i=1$i<count($arrAN); $i++)
{
  
$dynQry += " OR month(b_datum)='".$monat."' AND year(b_datum)='".$jahr."' 
      AND CAST(concat(b_datum, ' ', b_start) AS DATETIME) BETWEEN '"
.date_format($arrAN[$i], 'Y-m-d H:i:s')."' AND '".date_format($arrAB[$i], 'Y-m-d H:i:s')

Ich bekomme den Querystring aber nicht hin, könnt ihr mir sagen wo die Säge klemmt?



MfG watchdogg
watchdogg ist offline   Mit Zitat antworten
Alt 13.09.2011, 14:29  
Benutzer
 
Registriert seit: 19.03.2009
Beiträge: 32
watchdogg befindet sich auf einem aufstrebenden Ast
Standard

Habe es selber rausgefunden:

PHP-Code:
$dynQry $dynQry." OR month(b_datum)='".$monat."' AND year(b_datum)='".$jahr."' 
      AND CAST(concat(b_datum, ' ', b_start) AS DATETIME) BETWEEN '"
.date_format($arrAN[$i], 'Y-m-d H:i:s')."' AND '".date_format($arrAB[$i], 'Y-m-d H:i:s')."'"
Sorry...

Achso, @Sirke...

habe es wie gesagt mit Arrays gemacht und ist Performance ist gut, die DB ist allerdings noch sehr klein, weil noch in der Testphase.

Danke trotzdem...

Geändert von watchdogg (13.09.2011 um 14:34 Uhr).
watchdogg ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
(S) All-In-One Tool für Freiberufler (Rechnung, Zeiterfassung und Kundenverwaltung) nicbec Off-Topic Diskussionen 12 31.08.2011 17:06
Fehler bei Auswertung eines Formulars bidu2004 PHP Tipps 2010 10 25.04.2010 21:17
Formular und Auswertung in einem php-Dokument Paeisi PHP Tipps 2009 17 28.11.2009 15:07
Scriptsuche Persönlichkeitstest mit Auswertung in PHP Dicke-Freunde Scriptbörse 2 20.08.2009 19:46
Auswertung erstellen rezix PHP Tipps 2008 5 15.02.2008 17:58
Auswertung von Veranstaltungstabelle maeck PHP Tipps 2006 10 01.11.2006 23:39
[Erledigt] Auswertung von Funktionen innerhalb von Strings PHP Tipps 2006 5 30.01.2006 14:03
Auswertung einer Pulldownmenus PHP Tipps 2005-2 2 23.10.2005 12:47
Auswertung Server, Hosting und Workstations 4 23.07.2005 15:11
Auswertung von Multiple Select-Listen PHP Tipps 2005-2 4 11.07.2005 17:52
[Erledigt] Auswertung und Uebertragung von Werten in Links PHP Tipps 2005-2 0 15.06.2005 12:12
[Erledigt] Auswertung von Mehrfachauswahllisten Datenbanken 25 26.05.2005 15:12
Auswertung mit globalen Variablen duerov PHP Tipps 2004 4 07.09.2004 14:23
checkbox auswertung PHP Tipps 2004 1 31.08.2004 21:08

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php select monat auswertung

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum