最近更新: 2007-06-13

TWPUG問答 - 查詢結果附上其他資訊?

原問題: 查詢結果附上條件?。需求是有一個來自使用者輸入的對照表,由於其內容每次輸入都不同,故並未建立在資料庫中。現在需要在查詢結果中加入此一對照資訊。

純 SQL 的方式可配合 CASE 關鍵字,但受限於查詢句子的長度及複雜度,僅適用於少量資訊。

SQL way, 少量的對照

用 CASE 關鍵字。See also: 使用 CASE 修飾資料內容

SELECT id, name,
    CASE name
        WHEN '乙' THEN 1
        WHEN '丙' THEN 2
        WHEN '甲' THEN 3
    END AS input_seq
FROM mytable;

Programming way, 大量的對照

用關聯陣列建立對照表,再將查詢結果轉入另一個結果陣列後,完成對照關係。

$input_seq = array(
    '乙' => 1,
    '丙' => 2,
    '甲' => 3
);

$query = "SELECT id, name FROM mytable;";
$results = array();
$indexOfRow = 0;
foreach ($pdo->query($query) as $row) {
    foreach ($row as $k => &$v) {
        $results[$indexOfRow][$k] = $v;
    }
    $results[$indexOfRow]['input_seq'] = $input_seq[$row['name']];
    ++$indexOfRow;
}

print_r($results);
樂多舊網址: http://blog.roodo.com/rocksaying/archives/3459603.html