Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сортировка по другой таблице

Сообщения:  [1-10] 

 
 автор: Trianon   (11.11.2006 в 21:40)   письмо автору
 
   для: 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

   
 
 автор: stalk3r   (11.11.2006 в 20:27)   письмо автору
 
   для: 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 . и проч.

   
 
 автор: Trianon   (11.11.2006 в 16:26)   письмо автору
 
   для: stalk3r   (11.11.2006 в 13:02)
 

Вы бы уточнили, какие именно поля в резукльтате Вам требуются...

   
 
 автор: Yakor   (11.11.2006 в 15:25)   письмо автору
 
   для: 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   (10.11.2006 в 20:11)
 

Спасибо, вроде работает. А как быть с извлечением этого же t2.name? Т.е. что бы это поле было и с полями t1. Мне приходится каждый раз новый запрос по id делать. Это нерационально

   
 
 автор: Yakor   (10.11.2006 в 20:32)   письмо автору
 
   для: Trianon   (10.11.2006 в 20:26)
 

да да...) я хотел дописать "WHERE table1.user_id= table2.id" ...я просто не был уверен что хотя бы все остальное будет работать, потому что в прошлый раз когда надо было делать выборку из двух таблиц я пользовался JOIN...

   
 
 автор: Trianon   (10.11.2006 в 20:26)   письмо автору
 
   для: 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:11)   письмо автору
 
   для: stalk3r   (10.11.2006 в 20:05)
 


SELECT t1.* 
  FROM t1 
    JOIN t2 ON t1.user_id = t2.id 
  ORDER BY t2.name

   
 
 автор: Yakor   (10.11.2006 в 20:08)   письмо автору
 
   для: stalk3r   (10.11.2006 в 20:05)
 

Точно не уверен, но может так покатит:
SELECT table1.user_id, table2.id, table2.name FROM table1, table2 ORDER BY table2.name DESC

   
 
 автор: stalk3r   (10.11.2006 в 20:05)   письмо автору
 
 

Я понимаю, что этот вопрос встаёт не в первый раз. Но тем не менее, нужно отсортировать результат запроса по другой таблице. Т.е. в 1й у нас user_id, а во 2й id, name... Т.е. нажно чтобы при выборке из 1й таблицы данные сортировались по 2й - полю name.
Ещё вопрос. У меня получается, что нужно каждый раз (для каждой записи) делать запрос ко 2й таблице, чтобы вывести этот name. Можно ли это сделать более элегантно?

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования