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 28-01-2008, 10:52
Galliano
 Newbie
Links : Onlinestatus : Galliano ist offline
Registriert seit: Jan 2008
Beiträge: 2
Galliano ist zur Zeit noch ein unbeschriebenes Blatt
Standard Ausgaben von 2 Tabellen nebeneinander gruppieren

Hallo,

ich habe 2 Tabellen mit gleichem Aufbau.
Die erste Tabelle enthält Werte aus 2006.
Die zweite Tabelle enthält Werte aus 2007.

Ich möchte nun die Ergebnisse aus beiden Tabellen
nebeneinander stehen haben. Die Einzelabfragen lauten:


Abfrage 1 für 2007:
SELECT Kundennr, SUM(Verkaufspreis) AS Umsatz07, SUM(Menge) AS Stueckzahl07
FROM vk2007
WHERE
(Bewegungsart = 'HK' OR Bewegungsart = 'TK')
AND
(Rabattgruppe = 'ZZ' OR Rabattgruppe = 'ZS' OR Rabattgruppe = 'ZW') GROUP BY Kundennr


Abfrage 2 für 2006:
SELECT Kundennr, SUM(Verkaufspreis) AS Umsatz06, SUM(Menge) AS Stueckzahl06
FROM vk2006
WHERE
(Bewegungsart = 'HK' OR Bewegungsart = 'TK')
AND
(Rabattgruppe = 'ZZ' OR Rabattgruppe = 'ZS' OR Rabattgruppe = 'ZW') GROUP BY Kundennr

Die Einzelabfragen funktionieren. Aber ich finde keine Lösung diese beiden Abfragen
zusammenzufügen, damit die Ausgabe wie folgt aussieht:

Kundennr | Umsatz07 | Stueckzahl07 | Umsatz06 | Stueckzahl06
2900 100.07 1.00 90.05 1.00
usw.

Für Tipps wäre ich sehr dankbar.
Mit Zitat antworten
  #2 (permalink)  
Alt 28-01-2008, 11:09
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ist auch schäbig, weil die Daten über zwei Tabellen aufgeteilt sind...
Mehr Sinn würde es machen eine Tabelle für alles zu nehmen und eine neue "Jahr"-Spalte mitzuführen.

Ansonsten irgendwie mit UNION oder so, aber die Geschwindigkeit ist mäßig und die Queries hässlich...

Ansonsten kannst du auch ein ORDER BY kundenummer ASC machen und dann bei den zwei einzelnen Queries bleiben und über PHP die Ausgabe regeln. Da du weißt, dass die ID entweder in beiden Datensätzen vorhanden ist, oder aufsteigend ist, kannst du die beiden Result-Sets durch gehen und entsprechend ausgeben, oder sagen, dass keine Daten vorhanden sind.
Mit Zitat antworten
  #3 (permalink)  
Alt 28-01-2008, 11:44
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ist doch kein Problem: ein einfacher Join über die Kundennummer:
Code:
SELECT 
	v7.kundennr, 
	SUM(v7.verkaufspreis) AS Umsatz07, 
	SUM(v7.menge) AS Stueckzahl07,
	SUM(v6.verkaufspreis) AS Umsatz06, 
	SUM(v6.menge) AS Stueckzahl06
FROM 
	vk2007 v7
LEFT JOIN
	vk2006 v6 USING(kundennr)
WHERE
	v7.bewegungsart IN('HK', 'TK')
AND
	v7.rabattgruppe IN( 'ZZ', 'ZS', 'ZW') 
GROUP BY 
	v7.kundennr
__________________
Gruss
H2O
Mit Zitat antworten
  #4 (permalink)  
Alt 28-01-2008, 11:54
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hm... ne
Man müsste einen FULL OUTER JOIN benutzen, aber den bietet MySQL afaik nicht an~

Bei deinem Query können Einträge fehlen, die in 2006 da sind, aber nicht in 2007 ... oder mach ich die Sache gerade komplizierter als sie ist? Oo
Mit Zitat antworten
  #5 (permalink)  
Alt 28-01-2008, 12:52
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
Bei deinem Query können Einträge fehlen, die in 2006 da sind, aber nicht in 2007 ...
Da hast du natürlich recht. Ich bin mal davon ausgegangen, dass diese Zahlen nicht interessieren. Falls sie trotzdem benötigt werden, müsste man das tatsächlich UNION verwenden, mit der gleichen Abfrage, aber einem RIGHT JOIN bzw. besser einem umgekehrten LEFT JOIN
__________________
Gruss
H2O
Mit Zitat antworten
  #6 (permalink)  
Alt 28-01-2008, 13:03
Galliano
 Newbie
Links : Onlinestatus : Galliano ist offline
Registriert seit: Jan 2008
Beiträge: 2
Galliano ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für Eure Antworten.

AN H2O:
Ich habe eben Deine SQL-Abfrage ausprobiert, aber leider werden
falsche Werte zurückgeliefert.

Mit UNION habe ich schon einige Abfrage getestet aber leider ohne
Erfolg.

Wie wird die UNION Abfrage in diesem Fall richtig geschrieben?

Besten Dank schon mal.
Mit Zitat antworten
  #7 (permalink)  
Alt 28-01-2008, 13:23
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Galliano
Ich habe eben Deine SQL-Abfrage ausprobiert, aber leider werden
falsche Werte zurückgeliefert.
Mit dieser (Nicht-)Aussage kann ich nichts anfangen. Ich wüsste nicht, was daran falsch sein könnte. Das die Resultate eventuell nicht vollständig sein können, haben wir vorher ja schon festgestellt.
__________________
Gruss
H2O
Mit Zitat antworten
  #8 (permalink)  
Alt 28-01-2008, 13:47
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mach es am besten einfach per PHP...
Oder krempel die Struktur um~
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 13:51 Uhr.