2016-11-19 6 views
0

Ich habe eine linke Verbindung auf zwei Tabellen durchgeführt, jedoch wurden kartesische Produkte hergestellt, während dies bei anderen nicht der Fall war. Das Beispielergebnis der Abfrage ist im Bild unten zu sehen. enter image description hereBeitreten verursacht kartesisches Produkt

Die Abfrage aktuelle Abfrage ist:

SELECT 
    R.Region, 
    C.CountryName, 
    D.Year, 
    I.Income, 
    D.Completion_Rate AS 'Completion Rate', 
    D.Pupil_Teacher_Ratio AS 'Pupil-Teacher Ratio' 
FROM 
    (SELECT 
     C.CountryCodeC AS 'CountryCode', 
     C.YearCC AS 'Year', 
     C.Completion_Rate, 
     R.Pupil_Teacher_Ratio 
    FROM 
     (SELECT 
      CountryCode AS 'CountryCodeC', 
      Data AS 'Completion_Rate', 
      YearC AS 'YearCC' 
     FROM 
      DataByYear 
     WHERE 
      SeriesCode = "SE.SEC.CMPT.LO.ZS" 
      AND YearC >= "2011%") C 
     LEFT JOIN 
      (SELECT 
       CountryCode AS 'CountryCodeR', 
       Data AS 'Pupil_Teacher_Ratio', 
       YearC AS 'YearCR' 
      FROM 
       DataByYear 
      WHERE 
       SeriesCode = "SE.SEC.ENRL.LO.TC.ZS" 
       AND YearC >= "2011%") R 
     ON C.CountryCodeC = R.CountryCodeR) D, 
    CountryRegion R, 
    Country C, 
    CountryIncome I 
WHERE 
    R.CountryCode = D.CountryCode 
    AND R.CountryCode = C.CountryCode 
    AND I.CountryCode = D.CountryCode 

Was ist das Problem und wie kann ich es beheben. Vielen Dank!

+0

Beispieldaten und gewünschte Ergebnisse würden Ihnen wirklich erklären, was Sie tun möchten. Außerdem haben Sie Kommas in der 'FROM'-Klausel - das ist wirklich eine schlechte Syntax für einen Cross-Join. –

+0

sollten Sie db Schema hinzufügen und, wenn möglich, das Bild in Text konvertieren. – McNets

Antwort

1

Ich denke, dass Sie auch auf für alle Ihre Fragen suchen möchten. Wenn Sie kein Jahr angeben, wird jedes Jahr mit allen anderen Jahren verbunden und Ihre Werte aufgebläht. Sie sollten also eine Bedingung hinzufügen:

A.Year = B.Year 

während Ihrer Abfrage.

1

versuchen Sie mit INNER JOIN anstelle der linken Join.

Verwandte Themen