2015-09-19 145 views
0

我想選擇具有相同ID的以下值。我基本上有一個存儲其值的提交表單,我想顯示每個提交。 這是DATABSE表的樣子:SQL選擇行的ID相同

| id |   name |  value | 
------------------------------------ 
| 1 |  venue_1 |  New York | 
| 1 |  time_1 |  12:00 | 
| 1 |  costs_1 |   50€ | 
| 2 |  venue_1 |  Berlin | 
| 2 |  time_1 |  15:00 | 
| ... |   ... |   ... |  

我要顯示這樣的值:在PHP

|  Venue |  Time | Cost | 
------------------------------------ 
| New York |  12:00 |  50€ | 
|  Berlin |  15:00 |  ... | 
| A Venue | The time | cost | 

我的SQL查詢,看起來像這樣(的Joomla):

$db->setQuery('SELECT value FROM subrecords WHERE name = "venue_1"'); 
$venue = $db->loadColumn(); 

$db->setQuery('SELECT value FROM subrecords WHERE name = "time_1"'); 
$time = $db->loadColumn(); 

但是,當我循環顯示它們時,它們不匹配:

foreach ($venue as $key => $val) { 
    $output .= "<tr> 
    <td>".$venue[$key]."</td> 
    <td>".$time[$key]."</td> 
    </tr>"; 
} 
print($output); 

我沒有看到這裏的邏輯,因爲截至目前,我只是選擇所有的venue_1和time_1等,並加載列,所以我得到的每個價值,但他們需要相互鏈接,所以我可以以正確的方式顯示它們。

我的錯誤在哪裏?我怎樣才能通過ID鏈接他們?

如果有什麼不清楚請告訴我我不想讓你難以幫我:)

+1

爲什麼downvote?你能告訴我如何匹配ID嗎? – Mugen

+1

你的問題不值得讚賞。我只能給你一個投票。 –

回答

4

在這裏,你可以得到所有在一個查詢。當你刪除WHERE行時,你會得到鑽孔表

SELECT 
    Coalesce ((CASE WHEN name = "venue_1" THEN value END),NULL) Vebue, 
    Coalesce ((CASE WHEN name = "time_1" THEN value END),NULL) Time, 
    Coalesce ((CASE WHEN name = "cost_1" THEN value END),0) Coast 
    FROM subrecords 
    WHERE id = 1 
    GROUP BY id; 
+0

以某種方式返回給我沒有你有更簡單的SQL解決方案嗎?我很新,想要了解它 – Mugen

+0

好吧,似乎我只需要選擇每列的ORDER BY ID ...我現在感覺非常愚蠢,但感謝您的幫助 – Mugen