2017-12-09 1 views
0

Ich beobachte ein Tutorial. Es gibt einen Code, den ich nicht verstehe, was er tun soll.Links Joins, ich brauche eine Erklärung über einen Code

$sql = 'SELECT p.*, 
     a.screen_name AS author_name, 
     c.name AS category_name 
    FROM 
     posts p 
     LEFT JOIN 
     admin_users a ON p.author_id = a.id 
     LEFT JOIN 
     categories c ON p.category_id = c.id 
    WHERE 
     p.id = ?'; 

Ich las über die linke verbindet, aber ich sie nicht verstand. Kann mir bitte jemand den Code erklären, den ich geteilt habe? Vielen Dank im Voraus!

+0

Es macht das gleiche, dass alle linken JOINs tun – Strawberry

Antwort

2

Stellen Sie sich vor, Sie haben zwei Tabellen. Eine, die die Informationen über die Programmierer auf Ihrer Website speichert, und die andere Tabelle, die ihre Online-Einkäufe verfolgt.

PROGRAMMERS Tabelle

+--------------------------------------------+ 
| ID | NAME  | AGE | ADDRESS | SALARY | 
+----+----------+-----+-----------+----------+ 
| 1 | Desire | 32 | 123 fake s| 3000.00 | 
| 2 | Jamin | 25 | 234 fake s| 2500.00 | 
| 3 | Jon  | 23 | 567 fake s| 2000.00 | 
| 4 | Bob  | 30 | 789 fake s| 1500.00 | 
| 5 | OtherGuy | 31 | 890 fake s| 1000.00 | 
| 6 | DudeMan | 32 | 901 fake s| 500.00 | 
+--------------------------------------------+ 

KÄUFE Tabelle

+---------------------------------------------+ 
| ORDER_ID | PROG_ID | DATE | PRICE | 
+-------------+---------+---------------------| 
| 1   | 1  | 1-1-2017 | 100 | 
| 2   | 2  | 1-2-2017 | 200 | 
| 3   | 6  | 1-3-2017 | 300 | 
+---------------------------------------------| 

Sie entscheiden, was Sie brauchen eine neue Tabelle zu machen, diese Informationen zu einer Tabelle zu konsolidieren, die bestimmte Spalten Sie enthält.

Zum Beispiel, Sie würden es für die Zwecke des Versands nett sein, eine Tabelle zu haben, die die ID-, die NAME-, die PREIS- und die DATE-Spalten hat.

Gegenwärtig zeigen die Tabellen, die wir haben, nicht alles in einer einzelnen Tabelle an.

Wenn wir diese Tabellen VERBINDEN würden, würden wir am Ende die gewünschten Spalten mit NULL-Werten füllen, wo es keine Informationen zum Verbinden gibt.

SELECT ID, NAME, PRICE, DATE 
    FROM PROGRAMMERS 
    LEFT JOIN PURCHASES 
    ON PROGRAMMERS.ID = PURCHASES.PROG_ID; 

Beachten Sie, dass ich die Spalten bin ich die Auswahl von der Start Tabelle wollen, dann die rechte Tabelle Beitritt obwohl es möglicherweise fehlenden Informationen werden.

TABLE ENTSTEHEN

+-------------------------------------+ 
| ID | NAME  | PRICE | DATE | 
+----+----------+-----------------+---+ 
| 1 | Desire | 100  | 1-1-2017 | 
| 2 | Jamin | 200  | 1-2-2017 | 
| 3 | Jon  | NULL | NULL | 
| 4 | Bob  | NULL | NULL | 
| 5 | OtherGuy | NULL | NULL | 
| 6 | DudeMan | 300  | 1-3-2017 | 
+-------------------------------------+ 

Eine visuelle Darstellung der Differenz zwischen SQL JOINs überprüfen https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins.

+0

Dank mate. Jetzt verstehe ich es. Ich habe nur noch eine einfache Frage. Kannst du mir sagen, warum wir p. * In dem Code, den ich vorher gezeigt habe, AUSWÄHLEN? Ich verstehe, dass ". *" Jedem Wort entspricht, das mit dem Buchstaben "p" beginnt. Aber ich kann den Zweck nicht verstehen. – DesireOn

+0

@DesireOn Siehe: https://Stackoverflow.com/a/3639964/7813290 über die Verwendung von "*". In diesem Fall scheint es, dass Sie jede Spalte in p erhalten. – Jamin

+1

Nochmals vielen Dank für Ihre Rettung !! <3 – DesireOn

Verwandte Themen