2012-03-09 5 views
0

Prop PropID PropDescriptionВставка в таблицу пересечения ссылки внешнего ключа

отношения многие ко многим

Image ImageID ImageDescription

Image_has_Prop Prop_PropID Image_Imag eID

В моем приложении мне нужно вставить данные в Image_has_Prop. Пользователь вводит в ImageId, а затем выбирает Prop из JComboBox, который отображает поле PropDescription. Я пытаюсь понять, как связать описание с его внешним ключом, возможно ли это? Потому что я полагаю, что PropDescription не может быть уникальным. Ниже моя попытка, я думаю, что это далеко, если я честный, используя базу данных mysql.

INSERT INTO Image_has_Prop 
(Image_ImageID, Prop_PropID) 
VALUES 
(Select ImageID FRom Image where ImageID ='1', SELECT PropId FROM Prop Where PropDescription = 'Tablets'); 

ответ

1
INSERT INTO Image_has_Prop (Image_ImageID, Prop_PropID) 
SELECT 1, PropID 
    FROM Prop 
WHERE PropDescription = 'Tablets'; 

Вы уже знаете ImageID вы не хотите, поэтому нет необходимости запрашивать для него. При необходимости вы можете сделать подзапрос (изменить «1» на «(SELECT ImageID FROM Image WHERE ImageID = 1)»). Это будет выглядеть примерно так:

INSERT INTO Image_has_Prop (Image_ImageID, Prop_PropID) 
SELECT (SELECT ImageID FROM Image WHERE ImageID = 1), PropID 
    FROM Prop 
WHERE PropDescription = 'Tablets'; 

Или вы могли бы сделать перекрестное соединение, так как вы получаете одну строку из каждой таблицы:

INSERT INTO Image_has_Prop (Image_ImageID, Prop_PropID) 
SELECT i.ImageID, p.PropID 
    FROM Image i, Prop p 
WHERE i.ImageID = 1 
    AND p.PropDescription = 'Tablets'; 
+0

Как я и ожидал, работа совершенно спасибо! – Peddler