首先,尽管我不赞成使用MySQL,但目前我仍然被迫使用它。我非常清楚这个事实。希望你们仍然可以用我的sql语法帮助我。

我试图从一些不同的表中访问几列。问题是,有些列与我需要的最后一列需要使用不同的where子句,而最后一列的where子句需要来自其余查询的信息,因此我无法将其拆分为多个查询。

我不能使用并集,因为一个选择语句选择四列,而另一个选择一个列。

查询:

(SELECT DISTINCT inventory.Quantity, itemtypes.Itemtypename,
itemtypes.ItemtypeID, inventory.ItemID
FROM inventory JOIN itemtypes ON inventory.ItemtypeID = itemtypes.ItemtypeID
JOIN sets ON inventory.SetID = sets.SetID
WHERE inventory.ItemtypeID = itemtypes.ItemtypeID
AND itemtypes.Itemtypename = 'Set'
AND sets.SetID = '".$setid."')
UNION
(SELECT DISTINCT sets.Setname
FROM sets JOIN inventory ON sets.SetID = inventory.ItemID
WHERE sets.SetID = inventory.ItemID)


这是我尝试使用的方法,但没有成功。我似乎无法找到不使用多个查询就可以链接到不同选择语句的任何其他方式(由于我的PHP文件的结构,无法正确执行)。如果仅解决此问题,则文件的其余部分将起作用。希望你们能为我提供帮助,如果有可能,请告诉我。让我知道您是否也需要查看我的PHP代码。 $ setid从文件中的get派生,并包含数据库中存在的值。

最佳答案

可能是,您可以尝试这样。它在SQL Server中工作正常。

SELECT TMP1.Quantity,TMP1.Itemtypename, TMP1.ItemtypeID, TMP1.ItemID, TMP2.Setname
FROM(
SELECT DISTINCT
inventory.Quantity,
itemtypes.Itemtypename,
itemtypes.ItemtypeID,
inventory.ItemID
FROM inventory
JOIN itemtypes ON inventory.ItemtypeID = itemtypes.ItemtypeID
JOIN sets ON inventory.SetID = sets.SetID
WHERE inventory.ItemtypeID = itemtypes.ItemtypeID
AND itemtypes.Itemtypename = 'Set'
AND sets.SetID = '".$setid."'
) AS TMP1,
(
SELECT DISTINCT
sets.Setname
FROM sets
JOIN inventory ON sets.SetID = inventory.ItemID
WHERE sets.SetID = inventory.ItemID
) AS TMP2


希望这就是你想要的。您的问题似乎很含糊。

关于mysql - MySQL在单个查询中具有不同位置的多重选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20654203/

10-11 02:17
查看更多