php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.07.2011, 12:48  
Neuer Benutzer
 
Registriert seit: 18.07.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
mA1k befindet sich auf einem aufstrebenden Ast
Standard MySQL Multi Sum, select und Where

Hi Leute,

Ich hoffe ich bin nicht im falschen Forumbereich und der Titel ist nicht zu vermurkst. Falls doch könnt ihr dieses gerne verschieben

Ich bin auf ein (für mich) recht komplexen Punkt gestoßen wo ich jetzt nichtmehr weiter weiß.
Ich hoffe das der ein oder andere mir hier helfen kann oder mir auch einen Denkanstoß geben kann.

Also zu meinem Problem.
Ich habe eine Datenbank mit 2 Tabellen.
In der 1. Tabelle stehen Händlernamen und die PLZ's des Händlers drin.
In der 2. Tabelle die Umsätze, das Datum des Umsatzes und die Händler_id.
Ich möchte jetzt gerne auf 2 Halbjahre die Umsätze ausgeben lassen.
Das Problem ist dabei aber das ich auch die Sortierfunktion (ASC & DESC) nutzen möchte um jedes einzelne Feld zu Sortieren.
Das heißt -> Händlername, PLZ, Umsatz_halbjahr1, Umsatz_halbjahr2
Diese will ich jeweils einzeln auf und Absteigend sortieren.

Das folgende Hier hab ich versucht aber dort kommt ein Fehler das er Umsatz_halbjahr2 nicht kennt.

Code:
$sql = "SELECT billing_name, sum(total_net_amount) 
       as Umsatz_halbjahr1 
FROM 
       umsatz 
JOIN 
       partner ON umsatz.partner_id = partner.id
WHERE 
       datum between CONCAT(DATE_FORMAT(CURRENT_DATE(),'%Y'),'-01-01') 
AND 
       CONCAT(DATE_FORMAT(CURRENT_DATE(),'%Y'),'-06-30') 
GROUP 
       BY partner_id

union all

SELECT billing_name, sum(total_net_amount) 
       as Umsatz_halbjahr2 
FROM 
      umsatz 
JOIN 
      partner ON umsatz.partner_id = partner.id
WHERE 
      datum between CONCAT(DATE_FORMAT(CURRENT_DATE(),'%Y'),'-07-01') 
AND 
      CONCAT(DATE_FORMAT(CURRENT_DATE(),'%Y'),'-012-31') 
GROUP BY partner_id";
Problem Nummer 2 ist das ich "billing_name" dann 2 mal habe.
Das Order Fehler hier noch wegen der Übersichtlichkeit.

Daher dachte ich Alternativ so in diese Richtung was natürlich nicht geht.

Code:
$sql = "SELECT sum(total_net_amount) 
      as Umsatz_halbjahr1 
WHERE 
     datum between CONCAT(DATE_FORMAT(CURRENT_DATE(),'%Y'),'-01-01') 
AND 
     CONCAT(DATE_FORMAT(CURRENT_DATE(),'%Y'),'-06-30'),
sum(total_net_amount) 
     as Umsatz_halbjahr2 
WHERE 
     datum between CONCAT(DATE_FORMAT(CURRENT_DATE(),'%Y'),'-07-01') 
AND 
     CONCAT(DATE_FORMAT(CURRENT_DATE(),'%Y'),'-12-30') 
GROUP BY partner_id
Hier hab ich das Join weggelassen um etwas mehr Übersichtlichkeit zu lassen


Wenn mir hier jemand einen Tip geben kann bin ich sehr dankbar.
Auch wenn jemand sagt, "hey du machst da Bullshit, machs lieber so", dann bin ich auch da sehr dankbar

Vielen Dank schonmal im Voraus.
Grüße Maik

Geändert von mA1k (18.07.2011 um 13:25 Uhr).
mA1k ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.07.2011, 13:04  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

nuja - zum richtigen Bereich .... PHP ? DATENBANK ? würde ich erstmal spontan aufs 2te Pferd setzen, zumal du uns ja auch nur die SQL-Queries vorsetzt .... *g*

und zum eigentlichen Problem -

wenn du das für 2 Halbjahre getrennt haben willst - würde ich 2 einzelne Abfragen machen

und gut ist ... in deinem Fall "krabbelt" die Datenbank sowieso durch alle in Frage kommenden Datensätze

damit hast du dann 2 getrennte Datensätze , die du php-Seitig anhand der Spalte billing-name vereinen KÖNNTEST - aber ich nehme an, du zeigst es auf php-Seite auch in 2 getrennten Tabellen an
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 18.07.2011, 13:08  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Bitte sql formatieren, v.a. wenn man möchte, dass andere drauf schauen. Direkt aus dem Beautifier:

Code:
SELECT
            billing_name,
            SUM(
                total_net_amount
            ) AS Umsatz_halbjahr1
FROM
    umsatz
JOIN
    partner
ON
    umsatz.partner_id = partner.id
WHERE
    datum
    BETWEEN
        CONCAT(
            DATE_FORMAT (
                    CURRENT_DATE (),
                        '%Y'
                    ),
                    '-01-01'
                )
            AND CONCAT(
                DATE_FORMAT (
                    CURRENT_DATE (),
                        '%Y'
                    ),
                    '-06-30'
                )
GROUP BY partner_id
    UNION
        all
    SELECT
                billing_name,
                SUM(
                    total_net_amount
                ) AS Umsatz_halbjahr2
    FROM
        umsatz
    JOIN
        partner
    ON
        umsatz.partner_id = partner.id
    WHERE
        datum
    BETWEEN
        CONCAT(
            DATE_FORMAT (
                    CURRENT_DATE (),
                        '%Y'
                    ),
                    '-07-01'
                )
        AND CONCAT(
            DATE_FORMAT (
                    CURRENT_DATE (),
                        '%Y'
                    ),
                    '-012-31'
                )
GROUP BY partner_id
Code:
SELECT
            SUM(
                total_net_amount
            ) AS Umsatz_halbjahr1
WHERE
    datum
BETWEEN
    CONCAT(
        DATE_FORMAT (
                CURRENT_DATE (),
                    '%Y'
                ),
                '-01-01'
            )
    AND CONCAT(
        DATE_FORMAT (
                CURRENT_DATE (),
                    '%Y'
                ),
                '-06-30'
            ),
            SUM(
                total_net_amount
            ) AS Umsatz_halbjahr2
WHERE
    datum BETWEEN
        CONCAT(
            DATE_FORMAT (
                    CURRENT_DATE (),
                        '%Y'
                    ),
                    '-07-01'
                )
    AND CONCAT(
            DATE_FORMAT (
                    CURRENT_DATE (),
                        '%Y'
                    ),
                    '-12-30'
                )
GROUP BY partner_id
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog

Geändert von rudygotya (18.07.2011 um 13:13 Uhr).
rudygotya ist offline   Mit Zitat antworten
Alt 18.07.2011, 13:12  
Neuer Benutzer
 
Registriert seit: 18.07.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
mA1k befindet sich auf einem aufstrebenden Ast
Standard

An 2 Einzelne SQL abfragen dachte ich auch schon bereits.
Allerdings laufe ich dann in das Problem mit der Sortierug.

So war meine 1. Variante wo ich noch keine Sortierung hatte.
Das ging auch. Aber jetzt wo ich auch die Umsätze Sortieren will hab ich da nen leichtes Problem^^
mA1k ist offline   Mit Zitat antworten
Alt 18.07.2011, 14:53  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

das Problem hast du sowieso -

im ersten Halbjahr ist Shop A der obermacker
im zweiten Halbjahr brechen die ein und dafür ist Shop C auf einmal super

wie willst du das denn uner einen Hut bringen ?

Meiner Meinung nach müsstest du dafür sogar noch ne dritte Abfrage nach dem gesamt Jahr machen - damit ist die Reihenfolge eindeutig - und daraus kannst du dann auch die Reihenfolge der Halbjahreszahlen festlegen ....
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 18.07.2011, 15:05  
Neuer Benutzer
 
Registriert seit: 18.07.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
mA1k befindet sich auf einem aufstrebenden Ast
Standard

Ich hab mir wärend dessen auch bissel Gedanken gemacht.
Ich dachte mir jetzt grade das ich einfach mehrere mysql daten abfrage und das dann alles einzeln in ein 3demensionales array hau.
dieses kann ich dann vielleicht über array_multisort sortieren.

Glaubst Du das könnte gehen?
mA1k ist offline   Mit Zitat antworten
Alt 19.07.2011, 08:05  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

klar - die Frage bleibt, ob die Datenbank dank hochoptimiertem Code das nicht schneller kann - ich persönlich würde PHP nur wenig "Arbeit" überlassen wollen
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 23.07.2011, 11:46  
Neuer Benutzer
 
Registriert seit: 18.07.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
mA1k befindet sich auf einem aufstrebenden Ast
Standard

jap, ich auch, das ja der grund wieso ich das so dachte wie in meinem post geschrieben.
Allerdings find ich nicht zur lösung.

Daher dachte ich, vielleicht kann mir hier ja jemand helfen.

Array wäre jetzt so die ausweichlösung
mA1k 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
MySQL - Spalten in WHERE Klausel N4bla Datenbanken 2 17.01.2011 15:16
mysql select if und else 2 tabellen sandrasandra Datenbanken 15 28.04.2010 00:37
[Erledigt] MySQL SyntaxError bei Select-Abfrage :( soli Datenbanken 5 25.04.2010 00:48
* 2 tabellen -> mysql doppel select if und else??? sandrasandra Datenbanken 7 05.04.2010 22:18
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
[Erledigt] Mysql Select Multifeld strgg PHP Tipps 2009 5 20.11.2009 14:59
Zwei Select boxen aus mysql Füllen aboike PHP Tipps 2009 3 06.11.2009 09:33
[Erledigt] MySQL / Select mit Datum vom Vortag Delirius Datenbanken 7 08.07.2009 18:53
[Erledigt] umschreiben von sql auf mysql willow10 Datenbanken 4 17.05.2009 09:50
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MySQL 4.x - SELECT `feld` LIKE 'ä' - Fehlerhaft MrNiceGuy Datenbanken 2 25.03.2005 14:13
SELECT FROM DB WHERE 2 SACHEN UEBEREINSTIMMEN Datenbanken 3 24.01.2005 15:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
select sum, mysql select sum, sql year of date field, mysql select sum where, mysql umsatz 2011 2012 group, select sum mysql, mysql sum zwei tabellen, mysql sum 2 tabellen, mysql sum group by, select sum as, multiple select mysql, sum mysql, sql summen jahr anhand datum, mysql mehrfach select mehrere spalten, mysql php sum, mysql sum(date_format()), php mysql select über 2 tabellen mit sume, mysql php two sums, mysql summe aus zwei tabellen, mysql 2 tabellen union sum

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:04 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