2013-06-13 2 views
1

таблицу: Продукт: Атрибуты: PID, имяПолучение SQL-запрос, чтобы выбрать

Название таблицы: item_product

Атрибуты: Itemid, @pid, длина, цена, цвет. ИДПА является Foregin ключа от продукта

Itemid  pid   length   price colour 
1    1    3    5  blue 
2    1    4    10  red 
3    2    3    5   blue 
4    2    6    20   green 
5    3    4    4   g 
6    4    3    3   r 
7    1    3    4   e 
8    1    4    6   r     
9    2    6    100  light_blue 

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

у меня есть этот запрос, но его повторил

SELECT length, 
price FROM item_product WHERE pid=:id 

если я выполнить запрос выше и изменить PID 1. это будет просто показать мне все, что с PID 1, но я только хочу, чтобы показать это, если его отношение d к продукту name в product table

ответ

0

Вы можете использовать INNER JOIN как:

Например, у меня есть продукты, названные Mouse, Keyboard, Monitor, Tablet и Hard Drive. И на моем столе Item_Product у меня есть только предметы для мыши, клавиатуры, монитора и планшета, но не для Hard Drive. Итак, когда я INNER JOIN, две таблицы Жесткий диск будет исключен, так как он не находится в таблицах Item_Product, но, хотя он есть в таблице Product.

SELECT Itemid, B.name, length, price, colour 
FROM item_product A 
INNER JOIN product B 
ON A.pid = B.pid 

Проверьте мой sqlfiddleDemo

И если вы хотите, чтобы просмотреть конкретный продукт только тогда вы могли бы использовать ProductID (PID) или название продукта, как:

SELECT Itemid, B.name, length, price, colour 
FROM item_product A 
INNER JOIN product B 
ON A.pid = B.pid 
WHERE B.name = 'Mouse' 

Пример here

Если вы хотите узнать больше на JOIN, то проверьте это link, это показывает вам e визуальное представление того, как JOIN работает в sql.

+0

спасибо за то, что вы мне помогли, это дало мне идею для чего-то еще: D очень люблю это –

+0

Рад помочь :-) – Edper

0

Вы можете использовать следующее. Я использую внутреннее соединение, к столу продукта, и добавил где положение на имени.

 
SELECT pt.name, 
length, 
price 
FROM item_product as pr 
     inner join product as pt on pt.pid = pr.pid 
WHERE pr.pid = 1 and pt.name = 'name' 

В предложении where вам необходимо отфильтровать имя вашего продукта. Поэтому измените [имя], на то, что вам нужно.

Если вы только хотели бы фильтр только по имени, тот же запрос, как указано выше, но делает оговорку о где только по названию.

 
SELECT pt.name, 
length, 
price 
FROM item_product as pr 
     inner join product as pt on pt.pid = pr.pid 
WHERE pt.name = 'name' 

Сообщите мне, если это то, что вам нужно.

+0

спасибо, что это дало мне представление о том, что мне нужно было сделать. благодаря –

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