2016-08-08 10 views
1

Ich brauche Hilfe beim Abrufen von Daten aus Zeilen im Bereich. Lassen Sie uns sagen, das ist meine Tabelle:MySQL alle Zeilen im Bereich auswählen

enter image description here

Das ist, was ich brauche:

ich die Zeilen von ID sortieren müssen und dann Reihen erhalten, wo die GameID ist und Gewinnerunique_id muss in der Mitte sein. Zum Beispiel:

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

so sollte es zurück:

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

Wie kann ich dieses Ergebnis erreichen?

Danke.

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(); 

Dies funktioniert, aber ich frage mich, ob es in einer einzigen Reihe möglich ist.

+2

was hast du getan, um zu versuchen und erreiche das selbst? Wir sind nicht hier, um deine Arbeit für dich zu tun. Sie zeigen, was Sie versucht haben, wir werden (vielleicht) versuchen, es zu beheben. –

+0

Was ist Ihre Logik? '9 Reihen bekommen '? nach dem Zufallsprinzip? – Shank

+0

@Shank ja ich brauche genau 9 Zeilen. – Nedas

Antwort

1

Ist das wonach Sie suchen?

Es zuerst die ID des Gewinners findet, wählt dann Zeilen mit IDs kleiner und größer als 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

Ja! Ich werde das als Antwort akzeptieren, danke. – Nedas

Verwandte Themen