2016-08-08 17 views
1

範囲内の行からデータを取得するための助けが必要です。 さんが言ってみましょうこれは私のテーブルです:MySQLはすべて範囲内の行を選択します

が、私はIDによって行をソートしてからgameID1である行を取得する必要があります:私は必要なものだ

enter image description here

勝者のunique_idは真ん中にある必要があります。たとえば :

$gameID = 1; 
$winner = "iii"; 

ので、それは返す必要があります:

5.eee 
6.fff 
7.ggg 
8.hhh 
9.iii <--- winner in the middle 
10.jjj 
11.kkk 
12.lll 
13.mmm 

をどのように私はこの結果を達成することができますか?

ありがとうございました。

EDIT:

$b = $db->query("SELECT * FROM test WHERE gameID = 1 AND unique_id = 'iii'"); 
$res = $b->fetch(); 
$winnerID = $res['ID']; 
$b2 = $db->query("SELECT * FROM test WHERE ID BETWEEN $winnerID-4 AND $winnerID+4 ORDER BY ID ASC"); 
$data = $b2->fetchAll(); 

これは動作しますが、それは一列に可能だ場合、私は思っていました。

+2

を選択しますこれをあなた自身で達成しますか?私たちはあなたのためにあなたの仕事をするためにここにいません。あなたが試みたことを示すなら、私たちは(おそらく)それを解決するのを助けようとします。 –

+0

urロジックとは何ですか? '9行を取得する'?無作為に? – Shank

+0

@Shankはい私はちょうど9行が必要です。 – Nedas

答えて

1

これはあなたが探しているものですか?それは最初の受賞者のIDを見つけ

は、その後、IDが小さいと、行と4より大きい(4 + 4 + 1 = 9)あなたが試すことやっていること

SELECT * 
FROM rows 
WHERE id BETWEEN 
    (SELECT @id := id FROM rows WHERE unique_id = "iii") - 4 AND @id + 4 

Example

+1

はい!私はこれを答えとして受け入れます、ありがとう。 – Nedas

関連する問題