|
|
|
| у меня есть три таблицы:
workstations - здесь хранится информация о рабочих станциях
_task_list - здесь хранятся списки задач решаемых станциями
__tasks - а здесь хранятся сами задачи
структура таблиц:
workstations:
id, integer - primary key
..
tasks, integer - ссылка на primary key таблицы _task_list
_task_list:
id, integer - primary key
task_0, integer - ссылка на primary key таблицы __tasks
task_1, integer - ссылка на primary key таблицы __tasks
task_2, integer - ссылка на primary key таблицы __tasks
task_3, integer - ссылка на primary key таблицы __tasks
task_4, integer - ссылка на primary key таблицы __tasks
__tasks:
id, integer - primary key
task, text - задача
мне требуется создать запрос так чтоб у меня выбрались задачи с 0ой по 4ую для одной рабочей станции.
делал так:
SELECT `tsk`.`task`, `tsk`.`task`, `tsk`.`task`, `tsk`.`task`, `tsk`.`task`
FROM
workstations ws,
_task_list tsl,
__tasks tsk
WHERE (`ws`.`tasks` = `tsl`.`id`)
AND
((`tsl`.`task_0` = `tsk`.`id`) AND
(`tsl`.`task_1` = `tsk`.`id`) AND
(`tsl`.`task_2` = `tsk`.`id`) AND
(`tsl`.`task_3` = `tsk`.`id`) AND
(`tsl`.`task_4` = `tsk`.`id`));
в итоге ничего не выводит...
если вместо последних четырех AND поставить OR то информация выбирается та но не коректно
(выбирается 5 строк и все пять столбцов с одинаковой инфой)
помогите пожалуйста составить корректный запрос | |
|
|
|
|
|
|
|
для: dagmor
(15.12.2006 в 11:29)
| | Хм... что-то не очень понятно, почему _task_list содержит четыре поля task_X - что в них хранится, из вашего запроса следует что SELECT выберет только те записи, таблицы _task_list в которых все пять полей task_X будут равны между собой?
PS У вас одну задачу решают несколько рабочих станций? Или рабочая станция решает несколько задач? | |
|
|
|
|
|
|
|
для: cheops
(15.12.2006 в 13:50)
| | рабочие станции решают 5 разных задачи... списки задач повторяются для многих рабочих станций поэтому есть task_list | |
|
|
|
|
|
|
|
для: dagmor
(15.12.2006 в 11:29)
| | Все, что сейчас пришло в голову:
SELECT w.id,t1.task,t2.task,t3.task,t4.task,t5.task
FROM workstation w,tasks t1,tasks t2,tasks t3,tasks t4,tasks t5,task_list t_l
WHERE t1.id = t_l.task_0 and t2.id = t_l.task_1 and t3.id = t_l.task_2
and t4.id = t_l.task_3 and t5.id = t_l.task_4 and w.tascks = t_l.id
and w.id = <номер рабочей станции>;
|
Наверняка есть более простое решение. Но сейчас только так.
Данный пример практически соответствует условиям вашего запроса,т.к. я не
уверен в количестве символов подчеркивания в task_list и tasks. Подправьте сами. | |
|
|
|
|
|
|
|
для: AlexelA
(15.12.2006 в 17:00)
| | классс.... спасибо за вариант, не мог и преположить что можно одной таблице делать несколько алиасов... | |
|
|
|
|
|
|
|
для: dagmor
(15.12.2006 в 11:29)
| | task_list напрашивается в формате id, wks_id, task_id | |
|
|
|
|
|
|
|
для: Trianon
(16.12.2006 в 08:46)
| | немогу понять почему он напрашивается в таком формате? | |
|
|
|
|
|
|
|
для: dagmor
(16.12.2006 в 11:28)
| | помогите решить проблему
параллельно ведется в топике:
http://softtime.ru/forum/read.php?id_forum=3&id_theme=29931[ | |
|
|
|