baeckerman83: MYSQL Join aber nur prüfen ob wert in tabelle?

Hiho!
Ich habe ein Problem bei Mysql und kann nichts dazu finden, weil ich sicher falsch suche. Ich versuche mit Joins infos zubekommen, dabei werden aber mir soviele zeilen in der Ausgabe angezeigt wie die Mannschaft in der Tabelle Spiele vorkommen. Wie kann ich ihm da sagen, dass er das nur einmal anzeigen soll?

Mysql:

select liga, land_de from team_liga  
join liga l on id_liga_xml=xml_id_liga  
join land la on l.id_land=la.id_land  
join mannschaft m on m.id_mannschaft_xml=5  
join spiel s on (s.id_heim=m.id_mannschaft and s.id_liga=l.id_liga)  
where id_team=5;  

Ausgabe:
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'NonLeagueDivOne-SouthernSW', 'England'
'FATrophy', 'England'

  1. hi,

    Ich habe ein Problem bei Mysql und kann nichts dazu finden, weil ich sicher falsch suche. Ich versuche mit Joins infos zubekommen, dabei werden aber mir soviele zeilen in der Ausgabe angezeigt wie die Mannschaft in der Tabelle Spiele vorkommen. Wie kann ich ihm da sagen, dass er das nur einmal anzeigen soll?

    Deine Tabellen sind nicht normalisiert. Workaround: Distinct.

    Hotti

    1. Deine Tabellen sind nicht normalisiert. Workaround: Distinct.

      Hotti

      Echt daran liegt das? Dachte meine Tabellen sind normalisiert. Das ist natürlich schlecht, dann habe ich da ja im DB Design einen Fehler.

      1. Tach!

        Deine Tabellen sind nicht normalisiert. Workaround: Distinct.
        Echt daran liegt das? Dachte meine Tabellen sind normalisiert. Das ist natürlich schlecht, dann habe ich da ja im DB Design einen Fehler.

        Möglicherweise nicht. Je nach Join und Bedingung passen auf einen Datensatz der einen Tabelle mehrere Datensätze einer anderen Tabelle. Soviele wie passen, soviele Ergebnisdatensätze ergibt das. Siehe SELFHTML-Wiki: Einführung in Joins.

        dedlfix.

      2. hi,

        Echt daran liegt das? Dachte meine Tabellen sind normalisiert. Das ist natürlich schlecht, dann habe ich da ja im DB Design einen Fehler.

        Auf den (meinen) ersten Blick ja, weil Du einen INNER Join machst. Ein solcher sollte mit normalisierten Tabellen keine Doubletten liefern, vorausgesetzt, dass die Where-Klause stimmt.

        Hotti

        --
        Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
  2. Tach!

    Ich habe ein Problem bei Mysql und kann nichts dazu finden, weil ich sicher falsch suche. Ich versuche mit Joins infos zubekommen, dabei werden aber mir soviele zeilen in der Ausgabe angezeigt wie die Mannschaft in der Tabelle Spiele vorkommen. Wie kann ich ihm da sagen, dass er das nur einmal anzeigen soll?

    Eine korrelierte Unterabfrage (correlated subquery) könnte die Lösung sein. Aus deinem Code allein geht leider nicht hervor, wie die Tabellen aussehen und welche Informationen woher kommen. Deswegen kann ich momentan nicht genauer werden.

    dedlfix.

  3. مرحبا

    Ausgabe:
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'NonLeagueDivOne-SouthernSW', 'England'
    'FATrophy', 'England'

    Hilft hier nicht auch ein einfaches Group By? Die Daten sehen Identisch aus. Wenn alle die gleiche ID haben, sollte Group By doch schon reichen?

    mfg