0
我有一個商店項目和itemgroups。CAS中的奇怪行爲在子查詢中存在時(MySQL 5.5)
我還得到了一些額外的項目,從中應該隨機選擇一個項目,以便在購物車概覽中將其展示出來,如果該項目沒有在購物車中顯示。
也可以將項目鏈接到項目組。如果沒有鏈接到我想他們中的一個在車中的商品項目,這不是媒體鏈接裏面的車是隨機選擇的
我救item2item內表項之間的關係:
itemid INT
additional_item_id INT
我保存表組和項目之間的關係group2item
groupid INT
additional_item_id INT
要讓它多了幾分簡單,讓我們假設我項表看起來像這樣:
itemid INT
name VARCHAR(100)
這裏是我試圖獲得一個額外的項目:
SELECT
name
FROM
items a
WHERE
(a.itemid) = (
# if we have any additional items linked to the item get one of em randomly, that is not inside of a cart
SELECT
CASE WHEN EXISTS (
SELECT
b.additional_item_id
FROM
item2item b
WHERE
b.additional_item_id NOT IN (10)
AND b.itemid IN (10)
)
THEN (
SELECT
c.additional_item_id
FROM
item2item c
WHERE
c.additional_item_id NOT IN (10)
AND b.itemid IN (10)
ORDER BY
RAND()
LIMIT 1
# else if we have additional items linked to the items group get one of em randomly, that is not inside of a cart
) ELSE (
(
SELECT
d.additional_item_id
FROM
group2item d
WHERE
d.additional_item_id NOT IN (10)
AND
d.groupid IN (1)
ORDER BY RAND()
LIMIT 1
)
)
END as selecteditemid
)
任何人都可以向我解釋,爲什麼我得到不同數量的行與此?
items.itemid是主鍵。 我已經在滿足指定值的item2item和group2item中都有條目。 雖然測試我的SQL我實際工作與靜態值,仍然得到不同數量的值... 你可以舉一個例子如何使用從子句內的子查詢? 非常感謝您的努力! –
btw。 (a.itemid)=(subquery)< - 這個子查詢總是產生一個id –