2012-02-09 190 views
0

IM歌廳試圖做我的查詢裏面2個字時,這個錯誤子查詢返回多個1個

你第一次生病節目查詢:

$sql = mysql_query("select c.id, c.number, d.name, 
        (select count(*) from `parts` where `id_container`=c.id group by `id_car`) as packcount, 
        (select count(*) from `parts` where `id_container`=c.id) as partcount 
        from `containers` as c 
        left join `destinations` as d on (d.id = c.id_destination) 
        order by c.number asc") or die(mysql_error()); 

現在parts表中有2場是我需要在計數使用: id_car id_container

id_car =汽車的部分是 的ID=容器中的一部分是在

packcount所有我想要的ID是partcount所有每個集裝箱 的轎車總量的計數我希望它每個集裝箱

+0

您可以通過在你的packcount線有一組和您試圖將其作爲單列值返回。 – StudyOfCrying 2012-02-09 22:38:26

+0

如果你真的想得到這個幫助,我建議編輯你的問題,包括表定義和數據的例子,以及你的查詢所需的輸出。謝謝。作爲StudyOfCrying, – StudyOfCrying 2012-02-09 22:42:00

+0

說,你可以請把表結構,插入和你想要什麼你的查詢?它會更快, – 2012-02-09 23:14:12

回答

2

這是因爲GROUP BY的您正在使用

試着這麼做

(select count(distinct id_car) from `parts` where `id_container`=c.id) 

在你的子查詢(不能檢查現在)

編輯

PFY - 我認爲UNIQUE是索引

+0

截然不同!那就是我正在尋找的!非常感謝 – scarhand 2012-02-09 23:12:16

+0

是的,當我編寫這個表時,我正在索引一張表格,並且困惑自己:) – PFY 2012-02-10 03:57:27

0

您的分組的總份數的計數在您的第一個子查詢中會導致返回多行,您可能需要運行單獨的查詢以獲得您正在查找的結果。

+0

我真的想在1查詢中得到這個工作。 – scarhand 2012-02-09 22:44:14

+0

你有沒有嘗試過在你的第一個子查詢中選擇UNIQUE count(id_car)? - 編輯 - Xander擊敗了我 – PFY 2012-02-09 22:47:54

0

此子查詢可能會返回多個行。

(select count(*) from `parts` where `id_container`=c.id group by `id_car`) as packcount, ... 

所以,我建議嘗試以下的東西:

(select count(DISTINCT `id_car`) from `parts` where `id_container`=c.id) as packcount, ... 

見:COUNT(DISTINCT) on dev.mysql.com

和:QA on stackoverflow