У меня 2 стола. Один (домены) имеет идентификаторы домена и имена доменов (dom_id, dom_url).
другой содержит фактические данные, 2 из которых требуют доменных имен TO и FROM. Итак, у меня есть 2 столбца rev_dom_from и rev_dom_for, оба из которых хранят идентификатор доменного имени из таблицы доменов.
Простой.
Теперь мне нужно отобразить оба доменных имени на веб-странице. Я знаю, как отобразить один или другой, через LEFT JOIN domains ON reviews.rev_dom_for = domains.dom_url query, а затем вы выводите dom_url, который выводит имя домена в столбце rev_dom_for.
Но как мне сделать так, чтобы оно отображало второе доменное имя в столбце dom_rev_from?






вы бы использовали другое соединение, что-то вроде этих строк:
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
РЕДАКТИРОВАТЬ:
Все, что вы делаете, - это присоединяйтесь к столу несколько раз. Посмотрите на запрос в сообщении: он выбирает значения из таблиц отзывов (с псевдонимом rvw), эта таблица предоставляет вам 2 ссылки на таблицу домена (FOR и FROM).
На этом этапе легко присоединиться к таблице «Домен» к таблице «Обзоры». Один раз (с псевдонимом toD) для FOR и второй раз (с псевдонимом fromD) для FROM.
Затем в списке SELECT вы выберете поля DOM_URL из обоих LEFT JOINS таблицы DOMAIN, сославшись на них по псевдониму таблицы для каждого, соединенного со ссылкой на таблицу Domains, и присвоите им псевдонимы ToURL и FromUrl.
Для получения дополнительной информации о псевдонимах в SQL прочтите здесь.
использование не ключевого слова для имени таблицы проясняет ситуацию. кроме того, используйте ключевое слово «as» при наложении псевдонимов.
Простите меня, но я до сих пор не понимаю, как это должно работать. Две таблицы: домены (dom_id, dom_url) и обзоры (rev_id, rev_dom_from, rev_dom_for). Если бы кто-то мог написать точный запрос, чтобы я мог понять его, это было бы здорово, потому что я понятия не имею, что мне нужно редактировать.
Думайте о псевдонимах как о ссылках на строки в таблице, а не на саму таблицу. По аналогии, в цикле типа «for (i = 0; i <max; i ++)» переменная i является повторяющимся значением, а не самим циклом.
Я не знал, что вы можете сделать это в SQL, Грасиас.
Это прекрасная вещь.
Учитывая следующие таблицы ..
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
Если вы все еще застряли, уточните, что именно вы не понимаете.
Прочтите это и попробуйте, это поможет вам:
Таблица 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.
Хитрость заключается в том, что вы определили каждый JOIN с именем «AS to» и «AS from», чтобы вы могли использовать их в SELECT.