Announcement

Collapse
No announcement yet.

Tabellen zweimal abfragen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tabellen zweimal abfragen

    Hallo zusammen,

    ich möchte aus der Datenbank einer Warenwirtschaft die Verkaufszahlen der Artikel so auslesen, dass ich bestimmte Zeiträume miteinander vergleichen kann:
    Code:
     _____________________________________________________  
    I Art-Nr I Artikel      I  Menge 2008  I  Menge 2009  I
    I_____________________________________________________I
    I 12345  I Schraube     I         200  I         321  I
    I_____________________________________________________I
    I 54321  I Mutter       I         211  I         305  I
    I_____________________________________________________I
    I 67890  I U-Scheibe    I         155  I         172  I
    I_____________________________________________________I
    Dafür muss ich 3 Tabellen miteinander verknüpfen:
    - ARTIKEL für die Artikelnummer und den Artikelnamen
    - JOURNAL für das Rechnungsjahr
    - JOURNALPOS in der die Artikel den Rechnungen zugeordnet werden

    Das Problem ist, dass ich die gleichen Tabellen (JOURNAL und JOURNALPOS) wegen der unterschiedlichen Jahre zweimal abfragen muss.

    Ich habe jetzt folgende Abfrage geschrieben:

    Code:
     
    select
    A.ARTNUM as 'Art.-Nr.',
    A.KURZNAME as 'Artikel',
    sum(JP1.MENGE) as '2009',
    sum(JP2.MENGE) as '2010'
    from JOURNALPOS JP1, JOURNAL J1, JOURNALPOS JP2, JOURNAL J2, ARTIKEL A
    where A.WARENGRUPPE = 27
    and JP1.JOURNAL_ID=J1.REC_ID
    and JP1.ARTIKEL_ID = A.REC_ID
    and year(J1.RDATUM)= '2009'
    and JP2.JOURNAL_ID=J2.REC_ID
    and JP2.ARTIKEL_ID = A.REC_ID
    and year(J2.RDATUM)= '2010'
    group by A.REC_ID
    order by A.ARTNUM
    Leider bringt die Abfrage auch nach langem herumprobieren nicht das richtige Ergebnis. Vielleicht kann mir jemand etwas auf die Sprünge helfen.

    Gruß
    Nick

  • #2
    Was du möchtest nennt sich pivotieren
    http://www.itrain.de/knowhow/sql/tsql/pivot/pivot.asp

    ist zwar für MSSQL gilt aber im weitesten Sinn auch für MySQL.

    Nur in MySQL nutzt du WITH ROLLUP statt WITH CUBE.
    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

    Comment


    • #3
      Hallo,

      vielen Dank für den Tipp, jetzt habe ich es hinbekommen:

      Code:
      select
      A.ARTNUM as 'Art.-Nr.',
      A.KURZNAME as 'Artikel',
      sum(case(year(J.RDATUM)) when '2009' then JP.MENGE else 0 end) as '2009',
      sum(case(year(J.RDATUM)) when '2010' then JP.MENGE else 0 end)as '2010'
      from JOURNALPOS JP, JOURNAL J, ARTIKEL A
      where A.WARENGRUPPE = 27
      and JP.JOURNAL_ID=J.REC_ID
      and JP.ARTIKEL_ID = A.REC_ID
      group by A.REC_ID
      order by A.ARTNUM
      Gruß
      Nick

      Comment

      Working...
      X