2010-06-19 42 views
1

我有一個由 ID(AUTO_INCREMENT) 數爲int(可以包含的值從10到12)的表 myvalue的(VARCHAR)分散MySQL表的關係結構

我想要做的是驅散本表的報告用途的關係結構。即,我倒是希望有這樣的:

ID(AUTO_INCREMENT)

number10(含有myvalue的WHERE數= 10)

number11(含有myvalue的WHERE數= 11)

number12 (包含myvalue WHERE number = 12)

我知道我可以通過 得到相應的結果SELECT myvalue FROM mytable WHERE number = 10;

但我還沒有想出如何將這三個SELECT語句寫入單個表或視圖。

thx任何幫助提前!

+1

什麼是你的問題? – 2010-06-19 14:02:56

+0

一個問題會有幫助。 – thomasfedb 2010-06-19 14:04:15

+0

對不起,我正在嘗試使用HTML表格語法,它沒有解決......不是它的編輯。 – 2010-06-19 14:05:28

回答

1

這可能會做你所需要的。你沒有解釋得很好,但它可能不會!

SELECT user, 
MIN(CASE WHEN number = 10 then myvalue end) AS number10, 
MIN(CASE WHEN number = 11 then myvalue end) AS number11, 
MIN(CASE WHEN number = 12 then myvalue end) AS number12 
FROM table 
WHERE number IN (10,11,12) 
GROUP BY user 
+0

@Martin Smith和其他所有幫助過我的人。非常感謝這正是工作。我對這個不好的解釋感到非常抱歉。儘管所有這些你都明白了! 雖然我有兩個問題: 1)你能解釋爲什麼你使用MIN - 我真的很想了解會發生什麼...... 2)@ Vin-G如何在這裏格式化爲代碼? :D Thx again guys! – 2010-06-19 14:57:39

+0

@ ran2:每行縮進四個空格,或選擇一段文字,然後單擊101010圖標(ctrk-k快捷方式)。雖然你只能這樣做的問題和答案(不在評論中)。 – 2010-06-19 15:02:16

+1

@ ran2:有關詳細信息,請訪問http://stackoverflow.com/editing-help。 – 2010-06-19 15:09:34

1

我不明白的「ID number10 number11 number12」的東西,但如果你要選擇與number場相匹配的一組值的行,你可以這樣做:

SELECT * FROM mytable WHERE number IN (10, 11, 12); 

,或者,你可以選擇一些範圍

SELECT * FROM mytable WHERE number >= 10 AND number <= 12; 

編輯2:

Vin-G明白了。我是的方式關閉。

+0

抱歉在這樣一個誤導的方式,說明了這個問題。你們的建議正是我一開始就有的。我想把這個輸出轉換成一個以number10,number11,number12作爲COLUMN名字的表格。就我而言,我完全相信myvalue的正好包含行相同數量的每個數字 – 2010-06-19 14:19:08

+0

@ RAN2你能提供你從這個階段獲得,所以我們可以看到它需要如何擺動輸出的例子嗎?它是基於身份證嗎?還是它只能返回3條記錄?確切地說, – 2010-06-19 14:22:28

2

像這樣的事情也許?:

SELECT 
    id, 
    IF(number=10, myvalue, NULL) AS number10, 
    IF(number=11, myvalue, NULL) AS number11, 
    IF(number=12, myvalue, NULL) AS number12 
FROM mytable 
+0

!我想你剛剛懂得我的意思。雖然我不能跑到目前爲止,語法明智.... – 2010-06-19 14:30:00

+0

好吧,我沒有得到它。基本上這是我想要的。但由於NULL,我有交替行。我只是希望他們能夠在同一行中,如果他們屬於同一個用戶(ID).. – 2010-06-19 14:34:36

+0

@馬丁·史密斯:剛纔說有其他用戶列。在選擇查詢...嗯我倒是喜歡在這裏輸入一些表...會輕鬆很多:) – 2010-06-19 14:39:44