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 ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign 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 21.09.2009, 14:33:12
aklatte aklatte ist offline
Anfänger
 
Registriert seit: Sep 2009
Ort: Weimar
Alter: 42
Beiträge: 3
SQL Count über mehrere Spalten

Hallo

ich suche mir schon seit ein paar Stunden die Augen wund, finde aber so richtig keine Lösung, deswegen versuche ich es hier einfach mal.

Ich habe folgende Tabelle, welche ich nicht mehr wirklich verändern kann:
Code:
---------------------------------------------------------------------------------------
| ID | KDNR | Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---------------------------------------------------------------------------------------
|  1 | 2012 |   1    |    2     |    3     |     1      |    2    |    1    |    2    |
---------------------------------------------------------------------------------------
|  2 | 2013 |   2    |    1     |    3     |     2      |    3    |    2    |    1    |
---------------------------------------------------------------------------------------
|  3 | 2014 |   1    |    3     |    1     |     3      |    1    |    1    |    3    |
---------------------------------------------------------------------------------------
|  4 | 2015 |   3    |    1     |    2     |     2      |    2    |    2    |    1    |
---------------------------------------------------------------------------------------
|  5 | 2016 |   2    |    2     |    3     |     1      |    3    |    1    |    2    |
---------------------------------------------------------------------------------------
|  6 | 2017 |   1    |    2     |    1     |     2      |    2    |    3    |    2    |
---------------------------------------------------------------------------------------
Jetzt möchte ich eine Abfrage starten welches mir folgendes Ergebnis liefert

Code:
----------------------------------------------------------------------------------
| Wert | Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
----------------------------------------------------------------------------------
|  1   |    3   |     2    |     2    |      2     |    1    |    3    |    2    |
----------------------------------------------------------------------------------
|  2   |    2   |     3    |     1    |      3     |    3    |    2    |    3    |
----------------------------------------------------------------------------------
|  3   |    1   |     1    |     3    |      1     |    2    |    1    |    1    |
----------------------------------------------------------------------------------
Im Prinzip geht es darum, die Anzahl der jeweiligen Werte per Count zusammen pro Tag auszugeben, sprich am Montag gab es 3x Wert "1", am Dienstag 3x Wert "2" usw.

Mein Anzatz war mit :
Code:
 SELECT Montag, Count(Montag) 
FROM essen
WHERE Woche = '39'
GROUP BY Montag
zu counten, das funktioniert auch (aber nur mit Montag - oder einem anderen einzelnen Tag), wie bekomme ich aber auch die restlichen Tage hin?!

Vielleicht hat jemand einen Ansatz von Euch

Grüße
Alex
Mit Zitat antworten
  #2  
Alt 23.09.2009, 10:38:40
mgr mgr ist offline
Anfänger
 
Registriert seit: Sep 2009
Alter: 42
Beiträge: 14
AW: SQL Count über mehrere Spalten

Hallo aklatte

ich glaube ohne Stored Procedures oder php kann man dein Problem nicht lösen.

per PHP würde ich das so machen:

PHP-Code:
foreach($wert 1;$wert<MAX_WERT;$wert++) {
  
//SQL ABFRAGE HIER

Die SQL-Abfrage würde dann ca. so aussehen :

Code:
SELECT
  sum(if(Montag = $wert, 1, 0)) as Montag,
  sum(if(Dienstag = $wert, 1, 0)) as Dienstag,
  sum(if(Mittwoch = $wert, 1, 0)) as Mittwoch,
  sum(if(Donnerstag = $wert, 1, 0)) as Donnerstag,
  sum(if(Freitag = $wert, 1, 0)) as Freitag,
  sum(if(Samstag = $wert, 1, 0)) as Samstag,
  sum(if(Sonntag = $wert, 1, 0)) as Sonntag
FROM essen
WHERE Woche = '39'
Mit Stored Procedures kenne ich mich nicht aus, aber im das Prinzip bleibt dasselbe.

Lg
mgr
Mit Zitat antworten
  #3  
Alt 23.09.2009, 12:15:22
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: SQL Count über mehrere Spalten

Zitat:
Zitat von aklatte Beitrag anzeigen

Vielleicht hat jemand einen Ansatz von Euch

Grüße
Alex
ja, mit vielen subselects und einigem gefrickel -- dauert aber dann wahrscheinlich recht lange. kannst du mal eine *.sql datei zum importieren zur verfügung stellen mit den beispieldaten?
Mit Zitat antworten
  #4  
Alt 24.09.2009, 09:34:24
aklatte aklatte ist offline
Anfänger
 
Registriert seit: Sep 2009
Ort: Weimar
Alter: 42
Beiträge: 3
AW: SQL Count über mehrere Spalten

Hallo Zusammen,

ich habe euch mal 100 Beispieldaten angehängt, ich denke das dürfe fürs erste reichen.

Zur Performance ist zu sagen, dass diese hierbei eine untergeordnete Rolle spielt, da die Anwendnung lokal läuft und von der SQL Datenbank nichts anderes abverlangt wird!

LG
Alex
Angehängte Dateien
Dateityp: zip essen.zip (1,5 KB, 68x aufgerufen)
Mit Zitat antworten
  #5  
Alt 24.09.2009, 16:51:49
mgr mgr ist offline
Anfänger
 
Registriert seit: Sep 2009
Alter: 42
Beiträge: 14
AW: SQL Count über mehrere Spalten

ich bin ja kein SQL-Profi, aber ich glaube für dein Problem gibt es keine pure SQL Lösung.
Du musst entweder ein Skript dazu schreiben, oder einzelne Abfragen machen und die Resultate dann in Excel o.ä. exportieren. Ich glaube das musst du so oder so machen,
wenn du alle Daten von X_W1 bis X_W6 in der Form, wie du in deinem 1. Post beschreiben hast, bekommen willst.

Beispiel:
Code:
SELECT
  1 as Wert,
  sum(if(Mo_W1 = 1, 1, 0)) as Montag,
  sum(if(Di_W1 = 1, 1, 0)) as Dienstag,
  sum(if(Mi_W1 = 1, 1, 0)) as Mittwoch,
  sum(if(Do_W1 = 1, 1, 0)) as Donnerstag,
  sum(if(Fr_W1 = 1, 1, 0)) as Freitag,
  sum(if(Sa_W1 = 1, 1, 0)) as Samstag,
  sum(if(So_W1 = 1, 1, 0)) as Sonntag
FROM essen

union

SELECT
  2 as Wert,
  sum(if(Mo_W1 = 2, 1, 0)),
  sum(if(Di_W1 = 2, 1, 0)),
  sum(if(Mi_W1 = 2, 1, 0)),
  sum(if(Do_W1 = 2, 1, 0)),
  sum(if(Fr_W1 = 2, 1, 0)),
  sum(if(Sa_W1 = 2, 1, 0)),
  sum(if(So_W1 = 2, 1, 0))
FROM essen

union

SELECT
  3 as Wert,
  sum(if(Mo_W1 = 3, 1, 0)),
  sum(if(Di_W1 = 3, 1, 0)),
  sum(if(Mi_W1 = 3, 1, 0)),
  sum(if(Do_W1 = 3, 1, 0)),
  sum(if(Fr_W1 = 3, 1, 0)),
  sum(if(Sa_W1 = 3, 1, 0)),
  sum(if(So_W1 = 3, 1, 0))
FROM essen
So kriegst du die Ausgabe, wie du sie gerne hättest.
Den Block musst du dann halt fpr X_W1 bis X_W6 wiederholen. Die Abfragen kannst du dann ja abspeichern und immer wieder verwenden.

Gruss
mgr
Mit Zitat antworten
  #6  
Alt 24.09.2009, 22:48:16
aklatte aklatte ist offline
Anfänger
 
Registriert seit: Sep 2009
Ort: Weimar
Alter: 42
Beiträge: 3
AW: SQL Count über mehrere Spalten

S U P E R !

Das bringt mich um Lichtjahre wieder nach vorne, habe heute schon den ganzen Tag mit SUBSELECTS zugebracht und auch eine Lösung gefunden, aber wer hat schon lust ganze 400 secs auf ein Query zu warten!

Danke noch mal für die S U P E R Hilfe!

Grüße
Alex
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
Mit Count() nur bestimmte einträge finden visual_75 MySQLi/PDO/(MySQL) 1 08.07.2008 19:00:59
Problem mit SQL COUNT latina1984 PHP Grundlagen 0 03.10.2007 20:59:14
SQL - 2 Queries langsamer als einer mit großen Overhead ? Odi PHP für Fortgeschrittene und Experten 0 27.06.2003 21:20:11
Daten aus SQL auslesen und in 2 Spalten verteilen cobracio PHP für Fortgeschrittene und Experten 15 06.06.2003 16:07:23
Aus SQL zwei Spalten auslesen und als Link in HTML schreiben ninn PHP für Fortgeschrittene und Experten 1 22.01.2003 23:53:37


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:28:45 Uhr.


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


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