Две таблицы, один запрос (метод)

GoaMind

Новичок
Две таблицы, один запрос (метод)

Пересмотрел много тем в данном разделе, похожего что-то не нашлось..

Таблица 1 (du) // пользователи
id | user
1 Маша
2 Коля
3 Петя

Таблица 2 (dm) // сообщения пользователей
id |to |from
1 1 2
2 2 1
3 3 1
4 3 1
5 2 3

Цель:
выбрать dm.to и dm.from, но тока что бы заместо чисел to и from сразу выводила имена, соответствующие du.id...

Подскажите пожалуйста, каким методом это лучше всё осуществить?
 

GoaMind

Новичок
Я наверное не совсем подробно описал цель.

Вот запрос:
SELECT to, from FROM dm GROUP BY to, from LIMIT 0, 30

Вот этот запрос выводит to и from сгруппированными, но выводит только id юзера... а хотелось бы что бы имя, за место этого id. Заранее спасибо.!
 

chira

Новичок
Код:
SELECT t.user user_to,  f.user user_from
FROM dm,
,du t
,du f
WHERE dm.id = t.`to` and dm.id = f.`from`
GROUP BY 1,2
 

GoaMind

Новичок
chira
Объясните пожалуйста как это работает (точнее это не особо работает),
но инетресно зачем du t, du f? Почему просто нельзя одним алиасом?
 

chira

Новичок
(точнее это не особо работает)
что значит не особо работает?
но инетресно зачем du t, du f? Почему просто нельзя одним алиасом
один для имён to, другой для имён from
при соединении строк из таблицы dm и du t ищутся те которые удовлетворяют условию dm.id = t.`to` найденая строка будет содержать имя user_to, для user_from нужно найти другую строку которая удовлетворяет условию dm.id = `from`....
если бы мы использовали одну таблицу, то результатом этих двух условий, для любой строки, было false (если кто-то не разговаривалс сам с собой)
поэтому нужно использовать 2 алиаса ...
 

GoaMind

Новичок
chira Спасибо огромное!!!

там совсем маленькая ошибочка была, запятулька лишня и чуть чуть в WHERE
[sql]SELECT t.user to1, f.user from1
FROM du t, du f, dm
WHERE dm.user_to = t.id
AND dm.user_from = f.id
GROUP BY 1, 2[/sql]

P.s. при условии что поля таблицы dm будут user_to и user_from, вместо to и from, так по удобнее будет=)
 
Сверху