Помогите с запросом.

Volodei

Новичок
Помогите с запросом.

Есть 4 таблицы:
`forms`
`id` int(10)
`id_in_type_table` int(10)
`type` enum('type1', 'type2', 'type3')

`type1`
`id` int(10)
`model` varchar(255)

`type2`
`id` int(10)
`model` varchar(255)

`type3`
`id` int(10)
`marka` varchar(255)

Необходимо сделать выборку всех строк из таблицы forms с привязкой строк из остальных таблиц в зависимости от forms.type. Поле id_in_type_table является ключем к таблицам type1, type2, type3 и связан с полем id соответствующих таблиц.
Т.е. если выбирать из каждой таблицы по отдельности, то получится так:
SELECT * FROM forms, type1 WHERE forms.id_in_type_table = type1.id AND type = 'type1';
SELECT * FROM forms, type2 WHERE forms.id_in_type_table = type2.id AND type = 'type2';
SELECT * FROM forms, type3 WHERE forms.id_in_type_table = type3.id AND type = 'type3';

Но необходимо выбрать все одним запросом и потом отсортировать по полю model. Как это сделать?
Или лучше в несколько запросов выбирать например в массив и там сортировать? ТОгда получается массив многомерный, подскажите как его отсортировать?
 

Sender

Новичок
Посмотри UNION в MySQL документации

-~{}~ 09.02.07 18:53:

а вообще возможно стоит пересмотреть организацию таблиц. Как-то некрасиво получается три таблицы с одной структурой данных
 

Nogrogomed

Новичок
Sender
SELECT * FROM forms, type1 WHERE forms.id_in_type_table = type1.id AND (type = 'type1' OR type = 'type2' OR type = 'type3');
Ну и че ты написал?

Это равноценно
SELECT * FROM forms, type1 WHERE forms.id_in_type_table = type1.id


Volodei
При выборке одним запросом - тебе придется подключать 3 таблицы. У этих таблиц поля `model` - РАЗНЫЕ. Сортировать можно по какому-то одному...

Хотя... попробуй
ORDER BY `type`, `type1`.`model`, `type2`.`model`, `type3`.`model`.
Если это не спасет - то UNION


А про структуру таблиц - Sender хорошо подметил.
 

Volodei

Новичок
Да вот думал насчет сруктуры, но ничего полезнее не придумал. Посоветуйте как лучше сделать такое:
Страховая компания. Необходимо хранение страховок. Страховки 4х видов: каско, осаго, имущество и ДМС. У всех страховок часть полей совпадает, а остальные разные (поэтому совпадающие поля храню в одной таблице, а остальные по соответствующим таблицам). Причем должна быть общая нумерация страховок.

Так вот, нужно сделать вывод всех страховок общим списком и так же в таблице нужно выводить некоторые не общие поля. И еще и осуществить сортировку по этим полям. Вот и думаю как эту сортировку сделать.
 
Сверху