2014-07-18 101 views
0
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頁面中。

+4

'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

+0

如果您喜歡,請考慮遵循以下簡單的兩步操作步驟:1.如果您尚未這樣做,請提供適當的DDL(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry

+0

我用單引號說明了問題所在! 謝謝@jage – user3004860

回答

1

您使用mysql_fetch_array當你想mysql_fetch_assoc

//print the items 
while($row = mysql_fetch_assoc($q)) { 
    echo $row['one'] . " " . $row['two']; 
    echo "<br>"; 
} 

在一個側面說明,根據你的PHP,你mysql_query()函數也是因爲你的查詢與單一字符串可能產生錯誤引號,你在你的SQL中有單引號,你沒有逃脫。

+1

mysql_fetch_array的默認值是提供關聯數組和數組數組。所以這不是問題。但是你已經提到了引號...... – hellcode

0

我在這裏錯過了什麼,或者你真的只想one,two輸出到PHP?

while($row = mysql_fetch_assoc($q)) { 
    echo implode("," array($row['one'], $row['two'])); 
    echo "<br>"; 
}