2017-08-08 65 views
0

我有shop_product_videos的表:[MySQL的]:獲取產品行 - 如果不按品牌和產品代碼存在 - 只能得到按品牌,其中PRODUCT_CODE是空

ID |品牌| product_code |鏈接

每次我打開我的網頁它會使用此MySQL查詢具體產品視頻:

SELECT link FROM shop_product_videos WHERE brand='$brand' AND product_code='$product_code' LIMIT 1 

並顯示。

例子:

$brand = "Samsung"; 
$product_code = 111; 

43 | Samsung | 111 | youtube.be/111222333 

所以,如果我的網頁加載一個名爲「三星」產品,它有一個「111」爲「產品代碼」,它會顯示從DB行的視頻鏈接。

我想更新我的功能,當只有一個品牌名稱但我的表中沒有product_code(空/空)時,我想爲該產品顯示一個「常規視頻」(以及所有項目有「三星」作爲品牌)。

通緝的結果例子:

$brand = "Samsung"; 
$product_code = 777; 

43 | Samsung | 111 | youtube.be/111222333 
44 | Samsung | | youtube.be/444555666 

運行查詢,我將得到第二行(編號44),與視頻,因爲它沒有找到與777 product_code

+0

什麼你曾試過? –

+1

我想這是你想要的東西'SELECT鏈接從shop_product_videos WHERE brand ='$ brand'AND(product_code爲null或product_code ='$ product_code')LIMIT 1' – JYoThI

+0

@SagarGangwal Things like like: 'SELECT * FROM(SELECT * FROM shop_product_videos WHERE品牌= '三星' AND PRODUCT_CODE = '111' LIMIT 1 UNION SELECT * FROM WHERE品牌= '三星' AND PRODUCT_CODE = '' LIMIT 1)LIMIT 1' ,即時通訊不知道的 shop_product_videos (以下這篇文章:https://stackoverflow.com/questions/8076176/mysql-select-another-row-if-one-doesnt-exist) –

回答

0

簡單的使用總量爲比賽OR

SELECT link FROM shop_product_videos 
WHERE brand='$brand' 
AND (product_code is null or product_code='$product_code') 
LIMIT 1 

更新1:

SELECT link FROM shop_product_videos 
WHERE brand='$brand' 
AND (product_code='$product_code' or product_code='' or product_code is null) LIMIT 1 
+0

@downvoter你能解釋一下嗎?這樣我才能糾正我的錯誤。 – JYoThI

+1

它獲取產品,如果它在數據庫中有一個現有的product_code。但是它沒有product_code匹配的情況 - 它返回一個空的restult。 –

+0

什麼是您的列'默認值'當它是'空'@RickSanchez – JYoThI

0

您可以執行第一個查詢,驗證結果是否爲空(沒有找到該產品ID的結果)。在這種情況下是空的,再次查詢採取一切你想要的結果:

如果你想要的所有行:

SELECT link FROM shop_product_videos WHERE brand='$brand' OR product_code is NULL

如果希望每個之一:

(SELECT link FROM shop_product_videos WHERE brand='$brand' LIMIT 1) UNION (SELECT link FROM shop_product_videos WHERE product_code is NULL LIMIT 1) 
+0

正如示例中提到的 - 如果通過2個變量(品牌和product_code)返回一行,那麼它很好。如果不存在product_code不存在的地方 - 返回product_code爲空的行。 第一個查詢不會導致此問題。第二個結果錯誤#1221 - UNION和LIMIT的使用不正確? –

+0

如果您放置括號?你還有錯誤嗎? –