+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 15 von 33

Thema: SQL-Abfrage verschachtelt

  1. #1
    TP-Senior mat81 macht alles soweit korrekt Avatar von mat81
    Registriert seit
    Jun 2005
    Ort
    Köln
    Beiträge
    241

    Question SQL-Abfrage verschachtelt

    Hallo liebe DB-Cracks, hier mal ein kleines MySQL (4) -Problem von mir:


    Ich habe 2 Tabellen A und B, welche über eine weitere C verknüpft werden. Die Verknüpfung ist kein Thema. Jedoch möchte ich zudem wissen, wie oft jeder Eintrag von Tabelle A mit B verknüpft wird.

    Um die ganze Sache etwas anschaulicher zu gestalten, hier die konkrete Problemstellung.

    Es gibt eine Tabelle Benuter (A) und eine Tabelle Spiele (B).

    Jeder Benutzer registriert sich einmalig. Benutzerdaten werden in A gespeichert. Der Name der Spiele wird in B gespeichert.

    Über C erfolgt die Verknüpfung. Dort ist enthalten, welcher User welches Spiel gespielt hat. Also im Prinzip die Kombi aus ID_User und ID_Game. Zusätzlich gibts dann noch den Punktestand.

    Nun möchte ich eine Suche umsetzen, die mir alle Benutzer mit Einzelergebnissen ausgibt. Hat ein User an mehreren Spielen teilgenommen, so soll dies kenntlich gemacht werden. Der letzte Satz ist meine derzeitige Hürde.

    Und hier mal meine jetzige SQL-Query:

    Code:
    SELECT t.benutzername, t.vorname, t.nachname, t.strasse, t.plz, t.ort, t.email, t.newsletter, s.name AS spielname, k.punkte
    FROM teilnehmer t, spiele s, kombi k
    WHERE s.id = k.id_spiel
    AND t.id = k.id_benutzer
    Ich hoffe, dass ihr mir weiterhelfen könnt.

    The difference between theory and practice is
    that in theory there is no
    difference between theory and practice
    but in practice there is

  2. #2
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Reicht es denn dann die Gesamtpunktzahl zu haben?
    Code:
    SELECT t.benutzername, t.vorname, t.nachname, t.strasse, t.plz, t.ort, t.email, t.newsletter, s.name AS spielname, sum( k.punkte ) AS punkte , 
    IF ( COUNT( k.id_benutzer )  >1,  'yes',  'no' ) AS mehrspieler
    FROM teilnehmer t, spiele s, kombi k
    WHERE s.id = k.id_spiel AND t.id = k.id_benutzer
    GROUP BY k.id_benutzer
    Geändert von webcreate (15.09.2006 um 22:19 Uhr)
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  3. #3
    TP-Senior mat81 macht alles soweit korrekt Avatar von mat81
    Registriert seit
    Jun 2005
    Ort
    Köln
    Beiträge
    241
    Super, das müßte reichen. Mit IF-Anweisungen hab ich noch gar nichts in SQL gemacht. Sieht sehr gewöhnungbedürftig aus, wobei die Logik schnell klar wird. Vielen Dank und schönes Wochenende!

    The difference between theory and practice is
    that in theory there is no
    difference between theory and practice
    but in practice there is

  4. #4
    TP-Specialist phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Zitat Zitat von mat81
    Super, das müßte reichen. Mit IF-Anweisungen hab ich noch gar nichts in SQL gemacht. Sieht sehr gewöhnungbedürftig aus, wobei die Logik schnell klar wird. Vielen Dank und schönes Wochenende!
    Dito.. Die Jungs hier sind schon klasse ... Ich war gerade am überlegen wie man die genaue Anzahl der Teilnahmen an unterschiedlichen Games mit einem Sub-Query ermittelt. Aber webcreate war schneller und hat dabei gleich noch ein lehrreiches Beispiel gepostet

  5. #5
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Nachteil und was man hier dann sparen kann, ist der Spielename, da nicht die verschiedenen Spielenamen ausgegeben werden, dazu müsste man dann wohl doch mit subqueries arbeiten.
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  6. #6
    TP-Senior mat81 macht alles soweit korrekt Avatar von mat81
    Registriert seit
    Jun 2005
    Ort
    Köln
    Beiträge
    241
    Genau. Und ein 2. Problem, dass aus meiner Sicht zunächst wichtiger erscheint ist die Filterung nach Spielen. In der Übersicht möchte ich nämlich auch auf Spiele bezogen filtern. Dann wird mir aber für alle Teilnehmer "NO" angegeben. Doch soll für diese immernoch unabhängig angegeben werden, ob (und am besten in welchen spielen) sie außerdem bei anderen teilgenommen haben.

    The difference between theory and practice is
    that in theory there is no
    difference between theory and practice
    but in practice there is

  7. #7
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Ich glaub nicht, dass man das alles in eine Abfrage reinbekommt.
    Vor allem weil du ja sagst mySQL4, da sind ja auch keine Sub Queries zu nutzen, müsste man mal mit JOINs überdenken ...
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  8. #8
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    also mir fällt da so was ein:

    Code:
    select t.*,s.name AS spielname, k.punkte, count(k.id) as anzahl_spiele
    from kombi k
    left join spiele s on s.id=k.id_spiel
    left join teilnehmer t on t.id=k.id_benutzer
    group by k.id_benutzer


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  9. #9
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Bis aus das ich nicht die Punktesumme bekomme, schaut es genau so wie meine Ausgabe aus, das GROUP BY ist das Problem.
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  10. #10
    TP-Senior mat81 macht alles soweit korrekt Avatar von mat81
    Registriert seit
    Jun 2005
    Ort
    Köln
    Beiträge
    241
    Steffens Abfrage gefällt mir auch. Nur was mach ich, wenn noch ein

    Code:
    WHERE s.id = 2
    hinzu kommt? Dann werden mir die Anzahl der Spielbeteiligungen der einzelnen User nicht mehr korrekt angezeigt.

    The difference between theory and practice is
    that in theory there is no
    difference between theory and practice
    but in practice there is

  11. #11
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Mal anders herum gefragt:
    Was willst du mit dem WHERE s.id = 2 erreichen?
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  12. #12
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    ist doch klar - nach spieltypen sortieren / einschränken.

    Bei mir haut das hin, ergänzung dann um auf s.id einzuschränken:

    Code:
    select t.*,s.name AS spielname, k.punkte, count(k.id) as anzahl_spiele
    from kombi k
    left join spiele s on s.id=k.id_spiel and s.id=1
    left join teilnehmer t on t.id=k.id_benutzer
    group by k.id_benutzer


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  13. #13
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Aber ich sehe ja immer noch nicht alle Spiele, ich sehe bei mir bsp folgendes.
    Abb2 ist die Tab kombi.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken SQL-Abfrage verschachtelt-join.jpg   SQL-Abfrage verschachtelt-kombi.jpg  
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  14. #14
    TP-Senior mat81 macht alles soweit korrekt Avatar von mat81
    Registriert seit
    Jun 2005
    Ort
    Köln
    Beiträge
    241
    steffen, das sieht sehr gut aus. Nur werden mir nun auch immernoch die Teilnhemer angezeigt, die nicht an dem gesuchten Spiel teilgenommen haben. Lediglich der Spieleeintrag bleibt für diese leer.

    The difference between theory and practice is
    that in theory there is no
    difference between theory and practice
    but in practice there is

  15. #15
    TP-Specialist Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    Was ist mit having s.id=1 ?

    Gruss
    Jan

+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51