Я смотрю учебник. Есть код, который я не понимаю, что должно делать.
$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 = ?';
Я читал о левых соединениях, но я их не понимал. Может кто-нибудь, пожалуйста, объясните мне код, который я поделил. Заранее спасибо!
Представьте, что у вас есть две таблицы. Тот, который хранит информацию о программистах на вашем веб-сайте и другую таблицу, которая отслеживает их онлайн-покупки.
Таблица ПРОГРАММ
+--------------------------------------------+
| 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 |
+--------------------------------------------+
Таблица покупок
+---------------------------------------------+
| ORDER_ID | PROG_ID | DATE | PRICE |
+-------------+---------+---------------------|
| 1 | 1 | 1-1-2017 | 100 |
| 2 | 2 | 1-2-2017 | 200 |
| 3 | 6 | 1-3-2017 | 300 |
+---------------------------------------------|
Вы решили, что вам нужно создать новую таблицу для консолидации этой информации в таблице, содержащей определенные столбцы.
Например, вы считаете, что для целей доставки было бы неплохо иметь таблицу, в которой есть идентификаторы, столбцы NAME, PRICE и DATE.
В настоящее время таблицы, которые мы имеем, не отображают все это в одной таблице.
Если бы мы были В ЛЮБОМ СОЕДИНЕНИИ этих таблиц, мы закончили бы заполнение нужных столбцов значениями NULL, в которых нет информации для объединения.
SELECT ID, NAME, PRICE, DATE
FROM PROGRAMMERS
LEFT JOIN PURCHASES
ON PROGRAMMERS.ID = PURCHASES.PROG_ID;
Обратите внимание, что я выбираю столбцы, которые я хочу из стартовой таблицы, а затем присоединяюсь к правой таблице, даже если может отсутствовать информация.
РЕЗУЛЬТАТ РАБОТЫ
+-------------------------------------+
| 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 |
+-------------------------------------+
Для визуального представления разницы между SQL JOINs проверьте https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins.