2017-04-11 5 views
1

Ich habe zwei Tabellen und ich versuche, die Thread-ID entsprechend der Max (ID) (die inkrementiert wird) der ersten Tabelle und der Benutzer-ID der zweiten Tabelle. In der SQL-Anweisung habe ich mich den Tabellen angeschlossen und versucht, die Spalte abzurufen, erhalte jedoch mehrere Zeilen und bin mir nicht sicher warum. Ich gebe eine Beispielbenutzer-ID von 1 an und erwarte einen Abruf von nur einer Zeile, die einen Wert von 85 haben sollte.Warum gibt meine SQL-Abfrage mehrere Zeilen zurück?

In geschriebenen Worten möchte ich die Thread-ID aus Tabelle 1 abrufen, die entspricht die user_id von Tabelle 2 und die maximale ID von Tabelle 1.

Ich habe die Geige unten.

http://sqlfiddle.com/#!9/8a7d5d/56

Antwort

1

Geben Sie diesen einen Versuch:

SELECT 
    $table_messages.thread_id 
FROM 
    $table_messages 
RIGHT JOIN 
    $table_recipients ON $table_messages.thread_id = $table_recipients.thread_id 
WHERE 
    user_id = 1 
order by $table_messages.id DESC 
Limit 0,1; 
+0

Vielen Dank! Ich war kurz davor, meinen Kopf gegen die Wand zu schlagen – LearntoExcel

0

In Ihrem letzten Zeile haben Sie die folgende Anweisung SELECT:

(SELECT MAX($table_messages.id)) 

aber Sie haben von nicht angegeben, welche Tabelle diesen Wert zu erhalten. Ändern Sie diese Aussage:

(SELECT MAX($table_messages.id) FROM $table_messages) 

Dies sollte nun eine Zeile zurückgeben.

+0

Vielen Dank für die Antwort, aber das scheint nicht die Logik zurückzukehren, die ich suchte. Etwas unterbricht die Abfrage. – LearntoExcel

Verwandte Themen