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

  • Автор темы Автор темы Tsep
  • Дата начала Дата начала

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.
 
Одним - никак.

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

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

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

Формочку не получитсься сделать, так как все входные данные мне приходят в виде xml...
 
Я бы сделал часть, а может и все поля type1-3 типом ENUM. Как я понимаю, времен года у нас 4, полов - 2, сколько типов ботинков бывает не знаю, для него, может быть, и потребуется отдельная таблица. Для первых двух, имхо, таблицы не нужны.
 
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]
 
Сверху