@Gish

Как правильно вывести данные из двух таблиц с помощью JOIN MySQL?

Таблицы

Есть таблица projects.
-----------------------------
| project_id | project_title |
-------------|----------------
| 154          | Ярославль   |
-------------|----------------
| 278          | Москва        |
-------------|----------------
| 322          | СПб             |
------------------------------

Есть вторая таблица orders
----------------------------------------
| order_id | order_from | order_to |
----------------------------------------
| 1             | 278           | 322         |
----------------------------------------
| 2             | 154           | 322         |
----------------------------------------
| 3             | 278           | 154         |
----------------------------------------

Нужно сопоставить order_from and order_to с таблицей projects, вывести project_title, где order_from = project_id and order_to=project_id
т.е. на выходе
------------------------------------------
| Заказ |       ИЗ        |        В            |
------------------------------------------
| 1             | Москва    | СПБ             |
------------------------------------------
| 2             | Ярославль | СПБ           |
------------------------------------------
| 3             | Москва     | Ярославль |
-------------------------------------------
SELECT * FROM `orders` AS OR 
JOIN `projects` AS PR ON PR .project_id=`OR `.order_from AS itsfrom
AND 
JOIN `projects` AS PR ON PR .project_id=`OR `.order_to AS itsto
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
1) Не нужны никакие AND, INNER JOIN — часть FROM. 2) Псевдонимы разные сделай.
SELECT * FROM orders
 INNER JOIN projects AS pf ON pf.project_id = orders.order_from
 INNER JOIN projects AS pt ON pt.project_id = orders.order_to


3) Не очень хорошее название колонок order_from и order_to. Лучше project_from/project_to.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
erge
@erge
Примус починяю
SELECT ord.order_id, prj1.project_title as project_title_from , prj2.project_title as project_title_to FROM `orders` ord
JOIN `projects` prj1 ON prj1.project_id=ord.order_from
JOIN `projects` ptj2 ON prj2.project_id=ord.order_to
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы