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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Многотабличный запрос
 
 автор: Кирилл Пачин   (27.08.2006 в 16:58)   письмо автору
 
 

Есть таблицы:
employees - id, post, name
employees_post - id, post_name
orders - serial_number, manager, kurier, date
towar - serial_number, price, nazvanie
В таблице employees хранятся записи о сотрудниках: id, должность(post) - связана с таблицей employees_post (employees.post = employees_post.id), фио сотрудника.
В таблице towar хранятся записи о товаре: серийный номер, цена, название.
Таблица orders является связующей таблицей. orders.serial_number - ссылка на таблицу towar, manager - ссылка на employees.id, kurier - также ссылка на employees.id.

Как мне выбрать название товара, цену товара, фио менеджера, фио курьера, дату заказа?

У меня проблема возникает при связке менеджера к employees.name и курьера к employees.name.
Я делаю такой запрос:

SELECT towar.nazvanie, towar.price, orders.date, employees.name as manager, employees.name as kurier 
FROM ((orders JOIN towar ON towar.serial_number = orders.serial_number) JOIN employees ON тут как раз проблемка возникла) 
WHERE orders.serial_number = 1

   
 
 автор: sasch   (27.08.2006 в 18:07)   письмо автору
 
   для: Кирилл Пачин   (27.08.2006 в 16:58)
 

Вы не могли бы скинуть дамп таблиц?

   
 
 автор: cheops   (27.08.2006 в 22:33)   письмо автору
 
   для: Кирилл Пачин   (27.08.2006 в 16:58)
 

Хм... в MySQL скобки пока вроде бы не допускаются при объединении таблиц... Обещают исправить в будующих версиях.

   
 
 автор: Кирилл Пачин   (27.08.2006 в 22:48)   письмо автору
 
   для: cheops   (27.08.2006 в 22:33)
 

У меня 4.1.20-community-nt и запросы со скобками выполняются нормально. Если вы про скобки внутри JOIN, то не знаю. Поэтому и прошу помощи.

   
 
 автор: cheops   (28.08.2006 в 12:18)   письмо автору
 
   для: Кирилл Пачин   (27.08.2006 в 22:48)
 

Я JOIN имею ввиду.

   
 
 автор: Кирилл Пачин   (28.08.2006 в 12:49)   письмо автору
 
   для: cheops   (28.08.2006 в 12:18)
 

Запрос

SELECT towar.nazvanie, towar.price, orders.date, employees.name as manager 
FROM ((orders JOIN towar ON towar.serial_number = orders.serial_number) JOIN employees ON employees.name = orders.manager)  WHERE orders.serial_number = 1

Выполняется нормально. Если скобки внутри ON, то я не проверял. Вот такая у меня версия mysql :) 4.1.20-community-nt

   
 
 автор: Trianon   (28.08.2006 в 10:19)   письмо автору
 
   для: Кирилл Пачин   (27.08.2006 в 16:58)
 


SELECT towar.nazvanie, towar.price, orders.date, managers.name as manager, couriers.name as kurier
FROM towar 
JOIN orders ON towar.serial_number = orders.serial_number
JOIN employees managers ON orders.manager = managers.id
JOIN employees couriers ON orders.kurier = couriers.id
WHERE ...

   
 
 автор: Кирилл Пачин   (28.08.2006 в 12:50)   письмо автору
 
   для: Trianon   (28.08.2006 в 10:19)
 

Спасибо! Попробую так. Только мне не понятна вот эта часть:
JOIN employees managers ON orders.manager = managers.id
JOIN employees couriers ON orders.kurier = couriers.id

   
 
 автор: Trianon   (28.08.2006 в 20:52)   письмо автору
 
   для: Кирилл Пачин   (28.08.2006 в 12:50)
 

managers и couriers это алиасы таблицы employees.
Можно написать
JOIN employees AS managers ON orders.manager = managers.id 
JOIN employees AS couriers ON orders.kurier = couriers.id
если так понятнее.

   
 
 автор: Кирилл Пачин   (28.08.2006 в 21:48)   письмо автору
 
   для: Trianon   (28.08.2006 в 20:52)
 

Спасибо, мне так более понятно, даже совсем понятно!

   
Rambler's Top100
вверх

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