Это можно сделать одним запросом? Или как уменьшить их количество?

Tsep

Guest
Это можно сделать одним запросом? Или как уменьшить их количество?

Это можно сделать одним запросом? Или как уменьшить их количество?
Есть таблица bt_model с полями
name,..., type1, type2, type3, где type1 type2 type3 указывают на записи в других 3-х таблицах.
пусть в табл bt_model type1=1, type2=2, type3=2
в табл bt_type1 поля:
id=1 name=Зимняя (то есть type1=1 соответствует "Зимняя")
....
в табл bt_type2 поля:
....
id=2 name=Мужская
....
в табл bt_type3 поля:
....
id=2 name=Туфли
....

на входе есть
$name, $type1="Зимняя", $type2="Мужская", $type3="Туфли"

Необходимо в табл bt_model вставить $name, и id-ки из bt_type1-bt_type3 которые соответствуют $type1-$type3. А если какой-то из $type1-$type3 нет в соотв табл, то вначале надо его туда поместить, а потом уже поставить линк в bt_model.

Сервер MySQL 4.0.11a-gamma.
 

young

Новичок
Одним - никак.

А ответ на свой вопрос ты можешь получить и сам, нужно всего лишь попробовать.
 

Tsep

Guest
Знал бы как пробовать, не спрашивал бы:)

а если упростить вопрос:

Необходимо в табл bt_model вставить $name, и id-ки из bt_type1-bt_type3 которые соответствуют $type1-$type3.
 

young

Новичок
select cool_id_1 from....
select cool_id_2 from....
select cool_id_3 from....

insert into ....
 

Апельсин

Оранжевое создание
ну насчет первого вывода данных, это тебе надо делать JOIN. А вот насчет проверки ..
сначала делать проверку, добавлять, а потом уже делать JOIN.
 

DemoNsp

Новичок
есть такое предположение, что на странице юзерь из списков выбирает эти типы жмет батон и скрипт все это обрабатывает,
тогда лучше передавать не названия а айдишники , тогда все отлично вбивается одним запросом
 

Tsep

Guest
>>DemoNsp

Формочку не получитсься сделать, так как все входные данные мне приходят в виде xml...
 

Green Mother

Guest
Я бы сделал часть, а может и все поля type1-3 типом ENUM. Как я понимаю, времен года у нас 4, полов - 2, сколько типов ботинков бывает не знаю, для него, может быть, и потребуется отдельная таблица. Для первых двух, имхо, таблицы не нужны.
 

Falc

Новичок
Re: Это можно сделать одним запросом? Или как уменьшить их количество?

Originally posted by Tsep
Это можно сделать одним запросом?
Конечно можно
Примерно так:

[SQL]
INSERT INTO bt_model
SELECT '$name', t1.id, t2.id,t3.id
FROM t1,t2,t3
WHERE t1.name='$type1' AND t2.name='$type2' AND t3.name='$type3'
[/SQL]
 
Сверху