INSERT INTO `stock` (`stock_id`, `product_attributes`, `product_id`, `qty`) VALUES
(43, '9,11', 2, 0),
(43, '9,12', 2, 10),
(44, '9,13', 2, 20),
(45, '10,11', 2, 0),
(46, '10,12', 2, 30),
(47, '10,13', 2, 50),
(48, '14,11', 2, 0),
(49, '14,12', 2, 0),
(50, '14,13', 2, 0);
我有一個數據表這樣和產品塔數據是子串的格式,即(9,11)顯示MySQL表數據
我必須列出其上都具有零的數量產品發生。
SELECT
product_attributes,
substring_index(product_attributes,',',-1) as one,
substring_index(product_attributes,',',1)as two
FROM
(SELECT *
FROM stock
ORDER BY substring_index(product_attributes,',',1) ASC,
substring_index(product_attributes,',',-1) ASC) AS ordered
WHERE
substring_index(product_attributes,',',1) NOT IN (
SELECT substring_index(product_attributes,',',1)as one FROM stock WHERE qty!='0')
GROUP BY one'
我在數據庫中運行了這個查詢並得到了正確的輸出!
http://i.stack.imgur.com/Gm9yp.jpg
現在我想顯示的列中的一個,(逗號)列中有兩個...即(14,11)
mysql_select_db('fly_stock');
// run query
$q = mysql_query('select product_attributes, substring_index(product_attributes,',',-1)as one,substring_index(product_attributes,',',1)as two from(SELECT * FROM stock order by substring_index(product_attributes,',',1)ASC, substring_index(product_attributes,',',-1)asc)as ordered where substring_index(product_attributes,',',1)not in (select substring_index(product_attributes,',',1)as one from stock where qty!='0')group by one');
//print the items
while($row = mysql_fetch_array($q)) {
echo $row['one'] . " " . $row['two'];
echo "<br>";
}
mysql_close($con);
?>
幫我編輯的PHP代碼,使14, 11顯示在php頁面中。
'mysql_query'是一個過時的界面,不應該在新的應用程序中使用,並且將在未來版本的PHP中刪除。像[PDO這樣的現代化替代品並不難學](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。如果您是PHP的新手,像[PHP The Right Way](http://www.phptherightway.com/)這樣的指南可以幫助解釋最佳實踐。 – tadman
如果您喜歡,請考慮遵循以下簡單的兩步操作步驟:1.如果您尚未這樣做,請提供適當的DDL(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry
我用單引號說明了問題所在! 謝謝@jage – user3004860