2017-07-23 2 views
0

Ich habe ein bisschen Schwierigkeiten zu verstehen JOINS mit mysql.zu verstehen, wie mysql verbindet Arbeit

ich habe 3 Tabellen. gold_sended) Benutzer-ID | gesendet

register) user_id | gold_swap_id

google_users) oauth_uid | portal_name

jetzt was getan werden muss, ist wie folgt. zuerst muss ich alle portal_names von google_users wo oauth_id = das gleiche wie register.user_id

Das nächste, was ich auch überprüfen müssen, wenn die register.user_id = gold_sended.user_id

Wenn das user_id aus dem Register der ist same als gold_sended user_id und dann

den Portalnamen anzeigen. Wenn nicht, dann nichts anzeigen.

Ich habe nie mit Joins gearbeitet, also bin ich ein bisschen verloren, wie man es richtig macht.

Ok ist jetzt gelöst.

SELECT 
          google_users.portal_name, 
          gold_sended.user_id, 
          gold_sended.date, 
          COUNT(gold_sended) as total_runs 
         FROM 
          register_gold_swap 
         LEFT JOIN google_users on register_gold_swap.user_id=google_users.oauth_uid 
         LEFT JOIN gold_sended on register_gold_swap.user_id=gold_sended.user_id 
         WHERE 
          register_gold_swap.gold_swap_id = "1" 
         AND register_gold_swap.status = "1" 
          GROUP BY google_users.portal_name 

Gibt jetzt die korrekten Daten aus. Vielen Dank an alle

+1

Wie wärs mit einem [visual Beispiel] (https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/), die auch beinhaltet Beispielabfragen? –

+0

@PaulT. Das ist das Problem, ich weiß nicht einmal, wie ich damit anfangen soll. –

+0

Beginnen Sie mit jedem grundlegenden Buch oder Tutorial – Strawberry

Antwort

1
select 
     g.portal_name 
    from 
     gold_sended as gs 
    left join register as r 
     on g.oauth_id=r.user_id 
    left join google_users as g 
     on gs.user_id=g.oauth_id 

versuchen diese

+0

Dieser Code erzeugt einen Fehler. Unbekannte colom 'g.oauth_uid' in on-Klausel –

+0

können Sie mir SQL-Dump geben? –

+0

Ok ich habe es jetzt. Ich musste ein paar Dinge für mich selbst ändern, damit ich es verstehen konnte. Es ist jetzt behoben. Ich stoße nur auf ein anderes Problem mit meinem gesamten Code. Aber wird eine neue Frage dafür stellen –