2013-04-13 4 views
0

У меня есть эта таблица:SQL-запрос не отображает правильные данные

Recipe = (idR, recipeTitle, prepText, cuisineType, mealType) 
Ingredient = (idI, ingrDesc) 
RecipIngr = (idR*, idI*) 

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

select idr, recipetitle 
from recipe 
where idr IN (select idr from recpingr where idi = 
(select distinct idr from ingredient where ingrdesc like '%honey%')) 
INTERSECT 
select idr, recipetitle 
from recipe 
where idr IN (select idr from recpingr where idi = 
(select distinct idr from ingredient where ingrdesc like '%mustard%')) 
ORDER BY idr; 

По какой-то причине это не отображает правильные данные, и я не знаю, что я делаю неправильно. Любая помощь? Что-то не так с моим запросом?

+0

Пожалуйста, покажите нам некоторые примеры данных, результат запроса и почему вы бы рассмотреть «правильные» данные. В идеале на http://sqlfiddle.com –

ответ

2

Что-то вроде этой помощи?

SELECT r.idr, r.recipetitle 
FROM recipe r 
INNER JOIN recipingr ring 
    ON ring.idr = r.idr 
INNER JOIN ingredient ing 
    ON ing.idi = ring.idi 
WHERE ing.ingrdesc LIKE '%honey%' 
OR ingrdesc LIKE '%mustard%' 
ORDER BY r.idr 
2

Я думаю, что вы перепробовали его. Почему не что-то вроде этого:

select idr, recipetitle 
from recipe r join recipInbg ri on r.idr = ir.idr 
join ingredient i on ri.idI = i.idI 
where ingrdesc like '%honey%' 
or ingrdesc like '%mustard%' 
1

Здесь вы идете:

select r.idr, r.recipeTitle from recipe r, ingredient i, recipIngr ri 
    where r.idR=ri.idR and ri.idI=i.idI and 
    (i.ingrDesc like '%honey%' or i.ingrDesc like '%mustard%') 
Смежные вопросы