2014-11-14 96 views
1

以下代碼教會了如何按第一列對結果進行分組。但我不知道如何去做第二欄。請解釋並給我一些讓我清楚明白的例子。非常感謝。 (對不起我的英語)按第二列的值提取組

$insert = $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)"); 
$insert->execute(array('apple', 'green')); 
$insert->execute(array('pear', 'yellow')); 

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 
$sth->execute(); 

/* Group values by the first column */ 
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)); 

而最重要的是我是否可以對錶中的字段或不名組羣。(在這種情況下,我不關心列名的索引,我只知道字段名)。由於

+0

*「最重要的是我是否可以根據表字段的名稱進行分組。」* - 然後使用MySQL的GROUP BY子句http://www.mysqltutorial.org/mysql-group-by.aspx – 2014-11-14 13:52:14

+0

如果您希望能夠按字段名稱對結果集進行分組,那麼您可以更好地瞭解有關MySQL可以執行的操作:「GROUP BY」是這裏工作的更好工具 – 2014-11-14 13:53:09

+0

當我使用GROUP BY。我沒有我的願望結果。 – 2014-11-14 13:54:52

回答

2

呃,爲the manual clearly states:結果由第一列的值進行分組,所以才改變:

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 

$sth = $dbh->prepare("SELECT colour, name FROM fruit"); 

CF的代碼示例,你已經拷貝粘貼:

/* Group values by the >> FIRST << column */ 
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)); 

傳遞列索引值確實可以值得一試,太:

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 
$byName = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP); 
$byColour = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, 1); 
+1

$ sth-> fetchAll(PDO :: FETCH_COLUMN | PDO :: FETCH_GROUP,numIndex);我剛剛發現了這一點。這可能是正確的。 – 2014-11-14 13:33:02

+0

@QuiNguyen:或許,你可以嘗試索引1(列是零索引)... – 2014-11-14 13:37:34

+0

*「列是零索引」* - 就像PHP等;)+1的一大特點,我不知道。 – 2014-11-14 13:46:06

0
$sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, columnIndex); 
$sth->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_GROUP, columnName); 

我不知道它的工作與否。去嘗試一下。

+0

'FETCH_UNIQUE'!='FETCH_GROUP',以及方法:引用手冊:_「'PDO :: FETCH_COLUMN':返回指定的0索引列」_ so'columnName'剛剛出來 – 2014-11-14 13:45:03

+0

請參閱我的編輯。我改變了它。 – jewelnguyen8 2014-11-14 13:47:51

+0

然後閱讀手冊,'columnName'仍然不是一個選項,雖然 – 2014-11-14 13:51:19

相關問題