首先,我不得不使用MySQL,儘管它已被棄用。我非常清楚這一事實。希望你們仍然可以用我的sql語法來幫助我。在單個查詢中使用不同風格的MySQL多重選擇
我想從一些不同的表中訪問幾列。問題是,有些列需要與最後一列不同的where子句,而最後一列的where子句需要來自查詢其餘部分的信息,所以我不能將它分成多個查詢,我試過了。
我不能使用聯合,因爲一個select語句選擇四列,而另一個選擇一列。
查詢:
(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是從文件中獲取幷包含數據庫中存在的值。
MySQL不被棄用!你到底在哪裏? API中的某些功能被更新的功能取代,就這些了。 – fancyPants
問題:樣本數據和期望的輸出肯定有幫助。並且您不需要在where子句中重複您的連接條件。你究竟在談論哪些條款?您的查詢可以完美地寫入一個查詢中,甚至不需要聯合。很不清楚的問題... – fancyPants
@fancypants我會盡力解釋兩個where子句的區別。它都圍繞sets.SetID ='「。$ setid。」'和sets.SetID = inventory.ItemID。 $ setid與inventory.ItemID不同。 $ setid基本上是一個包含多個集合的集合,集合與inventory.ItemID具有相同的ID。如果我在上面的Select子句中使用Setname,我將從$ setid集合中獲取setname,這是我不想要的。這就是爲什麼即時通訊試圖從集合中獲取所有集合名稱,其中SetID =在$ setid中選擇了ItemIDs。我同意它的困惑。 – user3069795