|
|
|
| Я понимаю, что этот вопрос встаёт не в первый раз. Но тем не менее, нужно отсортировать результат запроса по другой таблице. Т.е. в 1й у нас user_id, а во 2й id, name... Т.е. нажно чтобы при выборке из 1й таблицы данные сортировались по 2й - полю name.
Ещё вопрос. У меня получается, что нужно каждый раз (для каждой записи) делать запрос ко 2й таблице, чтобы вывести этот name. Можно ли это сделать более элегантно? | |
|
|
|
|
|
|
|
для: stalk3r
(10.11.2006 в 20:05)
| | Точно не уверен, но может так покатит:
SELECT table1.user_id, table2.id, table2.name FROM table1, table2 ORDER BY table2.name DESC | |
|
|
|
|
|
|
|
для: Yakor
(10.11.2006 в 20:08)
| | FROM table1, table2
это даст декартово произведение - бешенное количество строк сочетаний каждой строки из первой таблицы с каждой строкой из второй таблицы.
Тут не хватает WHERE table1.user_id= table2.id
ORDER BY table2.name DESC
выведет данные по алфавиту в обратном порядке. | |
|
|
|
|
|
|
|
для: Trianon
(10.11.2006 в 20:26)
| | да да...) я хотел дописать "WHERE table1.user_id= table2.id" ...я просто не был уверен что хотя бы все остальное будет работать, потому что в прошлый раз когда надо было делать выборку из двух таблиц я пользовался JOIN... | |
|
|
|
|
|
|
|
для: stalk3r
(10.11.2006 в 20:05)
| |
SELECT t1.*
FROM t1
JOIN t2 ON t1.user_id = t2.id
ORDER BY t2.name
|
| |
|
|
|
|
|
|
|
для: Trianon
(10.11.2006 в 20:11)
| | Спасибо, вроде работает. А как быть с извлечением этого же t2.name? Т.е. что бы это поле было и с полями t1. Мне приходится каждый раз новый запрос по id делать. Это нерационально | |
|
|
|
|
|
|
|
для: stalk3r
(11.11.2006 в 13:02)
| |
SELECT table1.*, table2.id, table2.name FROM table1, table2 WHERE table1.user_id = table2.id ORDER BY table2.name
|
| |
|
|
|
|
|
|
|
для: stalk3r
(11.11.2006 в 13:02)
| | Вы бы уточнили, какие именно поля в резукльтате Вам требуются... | |
|
|
|
|
|
|
|
для: Trianon
(11.11.2006 в 16:26)
| | Ну как какие.. например,
в table1 : id, date, user_id, city_id, state_id .....
table2: id, user_name
table3: id, city_name
table4: id, state_name
Вот я хочу извлечь одним запросом данные из 1 таблицы, при том, чтобы к результатам соответсвующих user_id, city_id, state_id добавлялись непосредственно их имена...
Ну короче чтобы можно было нарисовать таблицу:
table1:
date1 ------ USER_NAME1 ----- CITY_NAME1 ------- STATE_NAME1
date2 ------ USER_NAME2 ----- CITY_NAME2 ------- STATE_NAME2
date3 ------ USER_NAME3 ----- CITY_NAME3 ------- STATE_NAME3
И при этом не делать каждый раз запрос по записи из table1 вида WHERE id = user_id ......... WHERE id = city_id . и проч. | |
|
|
|
|
|
|
|
для: stalk3r
(11.11.2006 в 20:27)
| |
SELECT t1.date, t2.user_name, t3.city_name, t4.state_name
FROM t1
JOIN t2 ON t1.user_id = t2.id
JOIN t3 ON t1.city_id = t3.id
JOIN t4 ON t1.stste_id = t4.id
ORDER BY t2.user_name
|
| |
|
|
|