Ergebnis 1 bis 9 von 9

Thema: Multi-Join Komplizierte SQL-Abfrage v. drei Tabellen

  1. #1
    grafik2 ist offline Neuer Benutzer
    Registriert seit
    01.10.2008
    Beiträge
    1

    Standard Multi-Join Komplizierte SQL-Abfrage v. drei Tabellen

    Hallo,

    hoffe hier kann mir jemand helfen. Versuche diese 3 Tabellen nun in einer SQL-Abfrage auszulesen.
    Ich benutze:
    MySQL - 5.0.45
    PHP Version 5.2.6


    (Tabelle1) BESTELLUNGEN_INFO:
    ============================================
    AUFTRAGSNR___AUFTRAGSART_______RABATT________MWST
    001_____________order_____________10___________19
    002_____________order_____________20____________0
    003____________angebot____________- ____________-




    (Tabelle2) BESTELLUNGEN:
    ============================================
    AUFTRAGSNR__AUFTRAGSART__PRODUKT__ANZAHL__PREIS__K UNDENNR
    001____________order________Buch______2______12___ ___k12
    001____________order________CD________1______23___ ___k12
    002____________order________DVD_______1______20 _____ k10



    (Tabelle3) KUNDEN:
    ============================================
    KUNDENNR ____NAME_____VORNAME
    k12_______Mustermann ____Max
    k10__________Meier_______Paul




    Mein gewünschtes Ergebnis wäre:
    ERGEBNIS:
    ===================================
    KUNDENNR_____NAME_____AUFTRAGSNR______GESAMTPREIS
    k12________Mustermann____001_______________(2*12)+ (1*23)*(0.9 Rabatt)
    k10________Meier_________002_______________(1*20)* (0.8 Rabatt)





    Habe schon viele Ansätze versucht, hiermit habe ich zumindest 2 Datenbanken "fast" richtig ausgelesen (d.h. unter meinen richtigen Ergebnissen waren am Ende 3 Zeilen mit komischen Werten).

    [highlight=sql]
    $sql = "SELECT b.rechnungsnr,a.mwst,a.rabatt,ROUND(SUM((b.einzelp reis*b.anzahl)*(1-(a.rabatt/100))),2) AS Gesamtpreis FROM bestellungen_info AS a INNER JOIN bestellungen AS b ON a.auftragsnr = b.auftragsnr AND a.auftragsart='order' GROUP BY b.rechnungsnr,a.mwst ORDER BY b.rechnungsnr DESC ;";
    [/highlight]



    Vielen Dank im Voraus, irgendwie komm ich damit noch nicht klar. Code-Beispiele wären super nett.

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Du bist im falschen Forum, hier geht es um PostgreSQL.

    Code:
    SELECT k.kundennr AS kundennr,
               k.name AS name,
               bi.auftragsnr AS auftragsnr,
               (SELECT SUM(anzahl*preis)
                   FROM bestellungen b
                  WHERE b.auftragsnr = bi.auftragsnr) AS gesamtpreis
      FROM kunden k, bestellungen_info bi
    So oder so ähnlich kommst du an die Daten heran. Das Einschränken der Bedingungen überlasse ich dir.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von grafik2 Beitrag anzeigen
    Hallo,

    hoffe hier kann mir jemand helfen. Versuche diese 3 Tabellen nun in einer SQL-Abfrage auszulesen.
    Ich benutze:
    MySQL - 5.0.45
    Verlaufen, hier geht es weder um MySQL noch um PHP.

    Schnellschuß:

    Code:
    test=*# select * from bestellungen;
     abnummer |  art  | produkt | anzahl | preis | kunde
    ----------+-------+---------+--------+-------+-------
            1 | order | Buch    |      2 |    12 |    12
            1 | order | CD      |      1 |    23 |    12
            2 | order | DVD     |      1 |    20 |    10
    (3 rows)
    
    test=*# select * from bestellungen_info ;
     abnummer |   art   | rabatt | mwst
    ----------+---------+--------+------
            1 | order   |     10 |   19
            2 | order   |     20 |    0
            3 | angebot |        |
    (3 rows)
    
    test=*# select * from kunden;
     nummer |    name    | vorname
    --------+------------+---------
         12 | mustermann | max
         10 | meier      | paul
    (2 rows)
    
    test=*# select k.nummer, k.name, k.vorname, a.abnummer, sum(a.anzahl*a.preis * (100-i.rabatt)/100) from kunden k left join bestellungen a on (k.nummer=a.kunde) left join bestellungen_info i on (a.abnummer=i.abnummer) group by 1,2,3,4;
     nummer |    name    | vorname | abnummer |         sum
    --------+------------+---------+----------+---------------------
         10 | meier      | paul    |        2 | 16.0000000000000000
         12 | mustermann | max     |        1 | 42.3000000000000000
    (2 rows)
    
    test=*#
    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  4. #4
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    [quote=ads;14419]Du bist im falschen Forum, hier geht es um PostgreSQL.

    nö isser nicht:

    SQL (3 Betrachter)
    Fragen und Probleme rund um die Abfragespache SQL.

  5. #5
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von grafik2 Beitrag anzeigen
    Hallo,

    hoffe hier kann mir jemand helfen. Versuche diese 3 Tabellen nun in einer SQL-Abfrage auszulesen.
    Ich benutze:
    MySQL - 5.0.45
    PHP Version 5.2.6


    (Tabelle1) BESTELLUNGEN_INFO:
    ============================================
    AUFTRAGSNR___AUFTRAGSART_______RABATT________MWST
    001_____________order_____________10___________19
    002_____________order_____________20____________0
    003____________angebot____________- ____________-




    (Tabelle2) BESTELLUNGEN:
    ============================================
    AUFTRAGSNR__AUFTRAGSART__PRODUKT__ANZAHL__PREIS__K UNDENNR
    001____________order________Buch______2______12___ ___k12
    001____________order________CD________1______23___ ___k12
    002____________order________DVD_______1______20 _____ k10
    Hin oder her, ob Du hier richtig bist. Egal. Aber ein Hinweis zum Tabellendesign:

    Deine Tabelle Bestellungen enthält ja offensichtlich Bestellpositionen, während Bestellungen_Info die Kopfdaten zu den Bestellungen enthalten soll, oder?

    Warum in beiden Tabellen die Auftragsart? Warum bei den Bestellpositionen jedesmal die Kundennummer? Was ist, wenn auf unterschiedliche Positionen einer Bestellung unterschiedliche Rabatte sein können?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  6. #6
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Zitat Zitat von symbiont Beitrag anzeigen
    nö isser nicht:
    Du kannst noch so viel diskutieren davon bekommst du nicht mehr Recht.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  7. #7
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Du kannst noch so viel diskutieren davon bekommst du nicht mehr Recht.
    das liegt daran, dass
    - dies garkeine diskussion ist
    - ich auch nicht weniger recht bekommen wuerde
    - du garnicht authorisiert bist mir mehr oder weniger recht zu geben


  8. #8
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen

    Warum ...

    Andreas
    hallo Andreas ..

    sicher hast du damit vollkommen recht ..

    nur - hast du schon mal in eine SAP-betriebene DB geschaut?

  9. #9
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von symbiont Beitrag anzeigen
    hallo Andreas ..

    sicher hast du damit vollkommen recht ..

    nur - hast du schon mal in eine SAP-betriebene DB geschaut?
    Zur Info an Dich: die Frage war nicht an Dich gerichtet.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 18.08.2010, 13:19
  2. JOIN mit Tabellen ohne Eintrag
    Von maxx im Forum SQL
    Antworten: 3
    Letzter Beitrag: 02.08.2010, 07:06
  3. Join über mehrere Tabellen
    Von wannebeme im Forum SQL
    Antworten: 5
    Letzter Beitrag: 02.12.2009, 18:57
  4. Problem mit Join-Statement 3er Tabellen
    Von Head im Forum Andere Datenbanken
    Antworten: 3
    Letzter Beitrag: 06.05.2009, 11:24
  5. Problem SQL Abfrage für join
    Von Schimonku im Forum SQL
    Antworten: 7
    Letzter Beitrag: 31.01.2009, 21:26

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum