Как вы присоединяетесь к одной таблице дважды в mysql?
У меня есть 2 таблицы. Один (домены) имеет идентификаторы домена и имена доменов (dom_id, dom_url).
другой содержит фактические данные, 2 из которых для столбцов требуются имена доменов TO и FROM. Поэтому у меня есть 2 столбца rev_dom_from и rev_dom_for, оба из которых хранят идентификатор имени домена из таблицы доменов.
Simple.
Теперь мне нужно фактически отобразить обе доменные имена на веб-странице. Я знаю, как отображать один или другой, через LEFT JOIN domains ON query.rev_dom_for = domains.dom_url запрос, а затем вы эхо отзываете dom_url, который будет выводить имя домена в столбце rev_dom_for.
Но как бы я сделал это для второго имени домена в столбце dom_rev_from?
Ответы
Ответ 1
вы бы использовали другое соединение, что-то вроде этого:
SELECT toD.dom_url AS ToURL,
fromD.dom_url AS FromUrl,
rvw.*
FROM reviews AS rvw
LEFT JOIN domain AS toD
ON toD.Dom_ID = rvw.rev_dom_for
LEFT JOIN domain AS fromD
ON fromD.Dom_ID = rvw.rev_dom_from
ИЗМЕНИТЬ
Все, что вы делаете, несколько раз присоединяется к таблице. Посмотрите на запрос в сообщении: он выбирает значения из таблиц отзывов (aliased as rvw), эта таблица предоставляет вам 2 ссылки на таблицу домена (FOR и FROM).
В этот момент вам просто перейти в таблицу "Домен" в таблицу "Отзывы". Однажды (с псевдонимом D) для FOR и второй раз (с псевдонимом D) для FROM.
Затем в списке SELECT вы выберете поля DOM_URL из обоих LEFT JOINS таблицы DOMAIN, ссылаясь на них по псевдониму таблицы для каждого, объединенного в ссылку на таблицу Domains, и обозначите их как ToURL и FromUrl.
Подробнее о aliasing в SQL читайте здесь.
Ответ 2
Учитывая следующие таблицы.
Domain Table
dom_id | dom_url
Review Table
rev_id | rev_dom_from | rev_dom_for
Попробуйте этот sql... (Это почти то же самое, что написал Стивен Райттон выше)
Фокус в том, что вы в основном выбираете из таблицы домена дважды в одном запросе и присоединяете результаты.
Select d1.dom_url, d2.dom_id from
review r, domain d1, domain d2
where d1.dom_id = r.rev_dom_from
and d2.dom_id = r.rev_dom_for
Если вы все еще застряли, будьте более конкретными, именно так вы не понимаете.
Ответ 3
Прочитайте это и попробуйте, это поможет вам:
Таблица 1
column11,column12,column13,column14
Таблица2
column21,column22,column23,column24
SELECT table1.column11,table1.column12,table2asnew1.column21,table2asnew2.column21
FROM table1 INNER JOIN table2 AS table2asnew1 ON table1.column11=table2asnew1.column21 INNER TABLE table2 as table2asnew2 ON table1.column12=table2asnew2.column22
table2asnew1
- это экземпляр таблицы 2, который соответствует table1.column11=table2asnew1.column21
и
table2asnew2
- это еще один пример таблицы 2, который соответствует table1.column12=table2asnew2.column22