2017-05-08 3 views
0

Ich habe 3 TabellenUnerwartetes Ergebnis von innerer Tabelle beitreten

  • Sponsor = id (PK), Bild, Link
  • sponsor_tier = id (PK), Namen
  • sponsor_tier_rel = id (PK), sponsor_id (FK Sponsor Tabelle id), sponsor_tier_id (FK sponsor_tier Tabelle id)

ich eine Abfrage wie folgt aus:

$stmt2 = $db_connection->prepare("SELECT 
            sponsor.image, 
            sponsor.link 
           FROM 
            sponsor_tier_rel 
            INNER JOIN sponsor_tier 
             ON sponsor_tier_rel.sponsor_tier_id = 8 
            INNER JOIN sponsor 
             ON sponsor_tier_rel.sponsor_id = sponsor.id 
           "); 

und ich sollte 10 Ergebnisse erhalten (wie es nur 10 Einträge in der Tabelle Sponsor_tier_rel gibt), aber stattdessen bekomme ich 80 Ergebnisse mit jedem Sponsor_tier_rel Eintrag wiederholt sich 8 mal.

Was habe ich hier falsch gemacht?

+4

Sie haben eine Querverbindung in Ihrer Abfrage. sponsor_tier ist mit nichts verbunden – GurV

+0

@GurwinderSingh ich vermasselt schlecht und über kompliziert dies. Ihr Kommentar hat geholfen – user2287474

+0

'SELECT sponsor.image, sponsor.link FROM sponsor_tier_rel INNER JOIN Sponsor ON sponsor_tier_rel.sponsor_id = sponsor.id WHERE sponsor_tier_rel.sponsor_tier_id = 8' war alles was benötigt wurde. Wenn Sie als Antwort einreichen, akzeptiere ich @GurwinderSingh – user2287474

Antwort

1

Ihre Abfrage fehlt die Join-Bedingung zu sponsor_tier Tabelle.

SELECT 
    sponsor.image, 
    sponsor.link 
FROM 
    sponsor_tier_rel 
    INNER JOIN sponsor_tier ON sponsor_tier_rel.sponsor_tier_id = 
sponsor_tier.id 
    INNER JOIN sponsor ON sponsor_tier_rel.sponsor_id = sponsor.id 
WHERE 
    sponsor_tier_rel.sponsor_tier_id = 8