Byl jsem prohlížení to stránky už nějakou dobu a tohle je můj první příspěvek, tak doufám, že jsem se naučil správný způsob, jak se zeptat... byla jsem přilepená na tento problém na nějakou dobu i přes všechny dostupné informace, pořád jsem ztracená.
Mám 3 tabulky. Sady, UserBudget, ItemCosts
table name column names
----------- ------------------------
Sets SetID
UserBudget UserID | ItemID | ItemBudget
ItemCosts SetID | ItemID | ItemPrice
ItemCosts obsahuje více položek, které jsou připojeny k 'Soubory' záznam v tabulce.
Potřebuji způsob, jak vrátit SetID je z první tabulky pouze tehdy, pokud UserBudget má stejné položky jako ItemCosts a všechny ItemPrice je rovna nebo nižší, aby ItemBudget.
Například:
Sets ItemCosts UserBudget
----------- ---------- ----------
SetID 1 SetID 1 UserID 1
ItemID 1 2 ItemID 1 2
ItemPrice 10 12 ItemBudget 11 11
Tohle nemá nic vracet, protože druhá položka cena je vyšší, než uživatel je rozpočet na to.
Sets ItemCosts UserBudget
----------- ---------- ----------
SetID 1 SetID 1 UserID 1
ItemID 1 2 ItemID 1 2
ItemPrice 10 12 ItemBudget 11 12
Tohle má vrátit Nastavit 1.
Jakékoliv mé pokusy skončí vrácení nastavit, pokud jedna z položek odpovídá rozpočtu. Tady je moje aktuální SQL (to je velmi zjednodušené verzi, nakonec jako všechny moje složité pokusy trvalo déle, spustit, ale vrátil se stejný výsledek):
SELECT *
FROM UserBudget a
INNER JOIN ItemCosts b on a.ItemID=b.ItemID
INNER JOIN Sets c on b.SetID=c.SetID
WHERE a.UserID=1 AND a.ItemBudget>=b.ItemPrice