2015-11-03 19 views
-1

Iam正在尋找使用mysql執行此查詢的最佳算法。使用mysql執行此查詢的最佳算法

SELECT room_no,fname,lname,title,gender,age,text 
FROM travelers WHERE reservation_id='9911' 
ORDER BY joinnum ASC, id ASC 

結果

room_no 
1  infant tess Mr M 0 
1  infant2 te1ss Mr M 0 
2  tes3 test66 Mr M 0 
2  tes3 test Mr M 0 
2  ss33 test66 Mr M 0 

我想用它給我的指標取決於room_no例如每個旅行者SQL功能添加另一列

traveler_order room_no 
0     1 infant  tess Mr M 0 
1     1 infant2 te1ss Mr M 0 
0     2 tes3  test66 Mr M 0 
1     2 tes3  test Mr M 0 
2     2 ss33  test66 Mr M 0 

這意味着給索引的foreach根據房間的行,即房間1有2個旅行者的選擇陳述將給予行0的索引0和行1的1,但行2開始新的房間,因此它會給第2行索引0 1 2 ......等等,希望能幫助我解決這個問題。

更多描述

我需要的是根據例如房間的房間號發出命令的foreach旅行者1具有2個出行因此第1行(旅行者1)將帶索引0處的旅行者2將(索引1 )然後在房間2開始有(3位旅客)訂單將旅客1在房間2取指數0和旅客2在房間2將採取指數1和旅客3在房間2將採取指數2如上面的第二個表

+0

如果您使用'ctrl-K',您可以將文本格式設置爲代碼。或者只是給每一行添加4個空格 –

+0

聽起來你需要一個計數器。但是你的問題還不清楚,請嘗試重新措辭以便我們更好地理解要求。 – htm11h

+0

你'訂購'有'joinnum'和'id'哪一個告訴你房間預訂時的訂單? –

回答

1
SELECT @seq := @seq + 1 AS traveler_order, 
     room_no, fname, lname, title, gender, age, text 
    FROM travelers 
    JOIN (SELECT @seq := -1) AS initialize 
    WHERE reservation_id='9911' 
    ORDER BY joinnum ASC, id ASC 

另外,

INDEX(reservation_id, joinnum, id) 
性能需要