2016-04-19 9 views
0

Kommentar TabelleMysql erhalten die Offset-Zeilen

+------+----------+ 
| id | comment | 
+------+----------+ 
| 1 | foo  | 
| 2 | bar  | 
| 3 | foobar | 
+------+----------+ 

Wiedergabetabelle

+------+----------+------------+ 
| id | replay |comment_id | 
+------+----------+------------+ 
| 1 | replay1 | 1   | 
| 2 | replay2 | 2   | 
| 3 | replay3 | 1   | 
+------+----------+------------+ 

SELECT 
    `comment`.`comment`, 
    `comment`.`id`, 
    (SELECT `replay`.`replay` FROM `replay` 
    WHERE `replay`.`comment_id` = `comment`.`id` 
    ORDER BY `replay`.`id` DESC LIMIT 1) AS `replay` 
FROM `comment` 

das Ergebnis

+----------+------+---------+ 
| comment | id | replay | 
+----------+------+---------+ 
| foo | 1 |replay3 | 
| bar | 2 |replay2 | 
| off | 3 |   | 
+------+----------+---------+ 

sein Wie kann ich die Position (Offset) des replay3 erhalten , erwartete es 2

replay1 es 1, Offset replay2 Offset 1 und replay3 Offset 2

+2

Mit Offset meinen Sie die Position in der Tabelle? Wenn Sie nicht 'ORDER BY' bestellen, ist die Position unvorhersehbar. Angenommen, Sie meinen eine chronologische Position, müssen Sie eine 'DATETIME'-Spalte hinzufügen. Die ID ist nicht immer eine sequenzielle/chronologische Kennung. – DanFromGermany

+0

@DanFromGermany nein nicht chronologisch ich brauche den offset der wiederholung ich bekomme es –

+0

ist der "replay" wert immer "replayX"? Dann solltest du einfach nicht "replay" sondern nur die Nummer einfügen. – DanFromGermany

Antwort

0

ich jetzt Ihre Idee. Sie meinen keinen Offset. Du meinst die Anzahl (Menge) an Kommentaren pro Wiederholung. Hier

we go:

SELECT 
    COUNT(*) AS amount 
FROM replays 
GROUP BY comment_id 

In Ihrer bestehenden Abfrage ich eine JOIN anstelle eines subselect verwenden würde ..

SELECT 
* 
FROM comments c 
JOIN replays r ON c.id = r.comment_id 
ORDER BY r.id DESC 

Sie sollten auch aufpassen, was Ihre primäre Entität.

  • Haben Kommentare Wiederholungen?
  • Haben Replays Kommentare?
  • Wie viele kann jeder (Relation) haben?
+0

no look .. Anzahl der Replay für Kommentar-ID eins seiner tow Replay und Anzahl der Wiederholung für Kommentar zwei seinen einen Kommentar jetzt der Offset oder Serie der Wiederholung für einen Kommentar wie 1 und 2 und Offset oder Position oder Reihe von Wiederholungen von Kommentar zwei muss 1 sein Ich muss den Offset oder Serie –

+0

Serie oder Rang der Wiederholung zu bekommen –

Verwandte Themen