iT邦幫忙

0

請問sql 按權重排序問題

各位好請問一個排序問題,若以要以李六來排序,如何排出第3個table 呢,這意思是tableA是要參考的資料表 ,KEY是權重,代表鍵盤權重是1,水果權重是2,所以在產出第3個TABLE 時要只抓出權重有的值和照權重來排序tableA這樣

table A

id prod acc
a 水果 張三
b 水果 李四
c 青菜 王五
d 電腦 李六
e 鍵盤 陳七
f 鍵盤 張三
g 水果 王五

KEY

KEY1 KEY2
鍵盤 李六
水果 李六

請問如何用SQL 語法排列出以下呢

NEW TABLE

id prod acc
a 水果 張三
b 水果 李四
g 水果 王五
e 鍵盤 陳七
f 鍵盤 張三
所以就是以李六這個TABLE來當作排序的條件就是了
每一種SQL版本寫出來的方式不一樣,不知道你的SQL是什麼版本
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
海綿寶寶
iT邦大神 1 級 ‧ 2017-06-16 09:02:27
最佳解答
CREATE TABLE tableA
    (`id` varchar(1), `prod` varchar(2), `acc` varchar(2))
;
    
INSERT INTO tableA
    (`id`, `prod`, `acc`)
VALUES
    ('a', '水果', '張三'),
    ('b', '水果', '李四'),
    ('c', '青菜', '王五'),
    ('d', '電腦', '李六'),
    ('e', '鍵盤', '陳七'),
    ('f', '鍵盤', '張三'),
    ('g', '水果', '王五')
;


CREATE TABLE tableKey
    (`KEY1` varchar(2), `KEY2` varchar(2))
;
    
INSERT INTO tableKey
    (`KEY1`, `KEY2`)
VALUES
    ('鍵盤', '李六'),
    ('水果', '李六')
;
SELECT A.* 
FROM tableA A,tableKey K
WHERE A.prod=K.KEY1
ORDER BY A.prod,A.id
看更多先前的回應...收起先前的回應...
jarrys1 iT邦新手 4 級 ‧ 2017-06-16 09:26:11 檢舉

hi 不好意思我題目權重部份寫錯了

正確版如下 key table 是權重鍵盤有3個所以權重較高,所以排序,先排鍵盤

tableA

id prod acc
a 水果 張三
b 水果 李四
c 青菜 王五
d 電腦 李六
e 鍵盤 陳七
f 鍵盤 張三
g 水果 王五

KEY

KEY1 KEY2
鍵盤 李六
鍵盤 李六
鍵盤 李六
水果 李六
水果 李六

請問如何用SQL 語法排列出以下呢

NEW TABLE

id prod acc
e 鍵盤 陳七
f 鍵盤 張三
a 水果 張三
b 水果 李四
g 水果 王五

Code 都給你了....不能自己改寫嗎

作業不自己寫,跑來問?
寫不出來就當掉明年再來就好了啊。

SELECT *,
(SELECT COUNT(*) FROM tableKey WHERE key1=tableA.prod GROUP BY key1) AS cnt
FROM tableA
WHERE (SELECT COUNT(*) FROM tableKey WHERE key1=tableA.prod GROUP BY key1) > 0
ORDER BY cnt DESC, id
jarrys1 iT邦新手 4 級 ‧ 2017-06-16 11:34:49 檢舉

謝謝 , 這不是作業

jarrys1 iT邦新手 4 級 ‧ 2017-06-16 11:37:45 檢舉

感謝海綿寶寶 回應,其於人,我們只是遇到不會的問題上來詢問而以不必要這樣說,難道這題你們會嗎

會不會,你問海綿寶寶,也許他知道。
說不定,你不知道別人都知道了。
再來,不會的問題,通常是不會?還是不願意認真思考?
或是不懂的善用那隻狗神?
每個人,總是有一堆的理由來訴說自己的不會。
然而更多的時候,我們看到的不是「會不會」這件事,而是其他的事情。
最後…光是你的態度……應該除了海綿寶寶這位大好人之外也沒什麼人想回答了。
「人家願意跟你說,是要讓你學習成長,如果你只會認為別人在酸言酸語,那麼……你還沒學會真正的思考問題。」
自己想清楚一點吧。

jarrys1 iT邦新手 4 級 ‧ 2017-06-16 15:21:52 檢舉

我相信在ithome上每個人上來詢問一定是有遇到什麼問題,可能以經努力了很久,也試過很多方式,但我們不是天才一定有不會的地方,將心比心,你今天問了一個問題結果,被人家講是作業吧 被當明年再來,你聽了感覺如何

沒什麼感覺,誰叫我要問。問了被噹就當別人是在指導,沒什麼好不高興的。
所以……誰叫你要問。

發問及回答的態度就是消極阿...明明人家已經給了一個基礎的CODE,你說已經努力了很久?!人家都給了CODE近乎功能都有了,自己改寫都不要說自己努力了很久?反而還直接PO上新的題目?這是你所謂的努力?

仲夏夜之夢
重點是他自己都不提供code……同樣的問題還拿去藍色小舖……
我的感覺就一整個在等答案的fu…
然後題意不清也是一個。

jarrys1 iT邦新手 4 級 ‧ 2017-06-16 15:56:19 檢舉

這二個code 請你們看一卜相似點在哪,還是你們連看都沒看

jarrys1 iT邦新手 4 級 ‧ 2017-06-16 15:56:41 檢舉

先酸再說,這樣

當然連看都不用看啊!
因為你沒有提供你的code。

小魚 iT邦大師 1 級 ‧ 2017-06-16 20:45:11 檢舉

回仲夏,其實他是先在小舖PO的,我先在小舖看到後來才在這裡看到的,
其實一直到海綿寶寶回答問題之後,你再問他我才搞清楚你的題目在說什麼,我想你要感謝海綿寶寶,要不然應該沒有人能夠回答吧。

小魚,你應該是說:要不然應該沒有人「想要」回答吧!
在這it邦有能力回答這個問題的人我想至少不會少於十個人。

小魚 iT邦大師 1 級 ‧ 2017-06-17 19:50:50 檢舉

恩恩,不好意思,措辭錯誤,不過我一開始真的不知道他的權重要怎麼取得...可能我沒接觸過這類的題目吧...
/images/emoticon/emoticon20.gif

這個題目邏輯有點奇怪? 還是 NEW TABLE 的結果有問題?
tableA: 水果 a,b,g 青菜 c 電腦 d 鍵盤 e,f
KEY: 鍵盤,鍵盤,鍵盤,水果,水果

照理 NEWTABLE 應該是
鍵盤 e
鍵盤 f
鍵盤 null
水果 a
水果 b
但水果 g 就排不到?

不然 KEY table 就應該只有
鍵盤
水果

我要發表回答

立即登入回答