2014-01-12 4 views
1

Я пытаюсь выбрать 2 из одного элемента из нескольких таблиц. Вот пробег моих данных.MySQL Выберите 2 элемента из нескольких таблиц

Предметы

Item ID Item name 
1   Item1 
2   Item2 
3   Item3 
4   Item4 

Пары товара

Item ID 1 Item ID 2 
4   1 
4   3 
3   1 
4   2 

Пары связаны через внешний ключ.

Что мне нужно сделать, это выбрать 2 названия элементов на основе идентификаторов пары элементов. Я выбрал только один из них с указанным ниже запросом, но не смог выбрать больше.

SELECT item_name FROM items, item_pairs WHERE item_pairs.item_id_1 = item.item_id 

Большое спасибо заранее

ответ

2

Попробуйте это с помощью воссоединиться таблице продуктов

SELECT 
    i.item_name, 
    i2.item_name 
FROM 
    items i 
    JOIN item_pairs ip 
    ON ip.item_id_1 = i.item_id 
    JOIN items i2 
    ON ip.item_id_2 = i2.item_id 
GROUP BY ip.item_id_1, 
    ip.item_id_2 
+1

Спасибо, это сработало отлично! Я добавил ip.item_pair_id, чтобы GROUP BY так, чтобы он был указан в списке элементов, оплаченных идентификаторами. Большое спасибо! – Linkandzelda

-1

Похоже, вы забыли на самом деле выбрать столбец 2-й таблицы ...

SELECT item_name, item_id_2 FROM items, item_pairs WHERE item_pairs.item_id_1 = item.item_id</strike> 

ОК, я тебя сейчас ... вам нужно добавить в конец ваш текущий запрос с параметром HAVING ... что-то вроде HAVING items.item_id 4 или все, что вы пытаетесь выбрать.

+0

ОП спрашивают, как он может выбрать имя предмета из двух пар из первой таблицы. Это правильно, но не отвечает на вопрос – unekwu

+0

Я думаю, я до сих пор не понимаю. :( –

+0

Проблема с этим запросом заключается в том, что item_name является полем внутри таблицы элементов, но item_id_2 isnt. Мне нужно вернуть 2 item_names на основе 2 item_ids внутри таблицы item_pairs. – Linkandzelda

Смежные вопросы