2013-04-25 106 views
-2

列我有一個表,如下所示:MySQL的結果集應該包含共同的價值行在

id, section, row, seat 
1 Stalls A  25 
2 Stalls A  26 
3 Stalls B  1 
4 Stalls B  2 
5 Stalls B  3 
6 Stalls B  4 
7 Lounge C  1 
8 Lounge C  2 

正如你可能已經猜到,該表代表的休息計劃。我需要能夠查詢桌子給我相鄰的座位。例如,如果我需要三個座位,它應該給我的座位ID 3,4,5而不是1,2,3。但是,如果我需要兩個席位,它應該給我席位編號1,2

在sql術語中,我需要能夠查詢'section'和'row'列中具有相同值的行。任何幫助,將不勝感激。

回答

1
select id, section, row,seat,rank 
from (select id, section, row,seat, 
     @rank:=if(@lastsection=section and @lastrow=row and @lastseat=seat-1,@rank,@rank+1) rank, 
     @lastsection:=section,@lastrow:=row,@lastseat:=seat 
     from tblA, (select @lastsection:='',@lastrow:='',@lastseat:='', @rank:=1)v 
     order by section,row,seat)s 
GROUP BY rank 
HAVING count(rank)>=numberofseatdesired; 

這將返回具有所需的相鄰座位號的id,section,row,starting seat。您可能需要第二次查詢才能檢索每個座位的詳細ID。

+0

謝謝。抱歉沒有記錄我努力讓它工作的努力。這顯然不符合標準。 :) – Venks 2013-04-25 08:02:21