Ich brauche alle Chats zu wählen, und jetzt bin ich der Auswahl sie mehrere Abfragen wie folgt verwendet:Einzel SQL-Abfrage für die Auswahl Chats
$query_1 = mysqli_query($database, "SELECT chat_id, user_id_1, user_id_2
FROM chat
WHERE user_id_1 = '$user_id' OR user_id_2 = '$user_id')");
if (mysqli_num_rows($query_1) > 0) {
while ($row = mysqli_fetch_assoc($query_1)) {
$chat_id = $row['chat_id'];
$user_id_1 = $row['user_id_1'];
$user_id_2 = $row['user_id_2'];
if ($user_id_1 == $user_id)
$user_id_chat = $user_id_2;
else
$user_id_chat = $user_id_1;
$query_2 = mysqli_query($database, "SELECT username
FROM user
WHERE user_id = '$user_id_chat'");
$row2 = mysqli_fetch_assoc($query_2);
$username = $row2['username'];
$query_3 = mysqli_query($database, "SELECT text,
(SELECT COUNT(message_id) FROM message WHERE chat_id = '$chat_id' AND user_id != '$user_id' AND seen = '0') AS unread_messages
FROM message
WHERE chat_id = '$chat_id'
ORDER BY message_id DESC
LIMIT 1");
$row3 = mysqli_fetch_assoc($query_3);
$text = $row3['text'];
$unread_messages = $row3['unread_messages'];
}
}
Gibt es einen Weg, um all diese ($ chat_id, zu bekommen $ user_id_chat , $ username, $ text und $ unread_messages) mit nur einer Abfrage?
EDIT: Hinzugefügt Beispieldaten und erwartete Ausgabe:
Table user
user_id username ...
1 User1 ...
2 User2 ...
3 User3 ...
4 User4 ...
Table chat
chat_id user_id_1 user_id_2 ...
1 3 4 ...
2 1 3 ...
Table message
message_id chat_id user_id text seen ...
1 1 4 Hi! 1 ...
2 2 1 Hello 1 ...
3 1 3 hi 0 ...
4 2 3 Hi 0 ...
5 2 3 How are you? 0 ...
Wenn $ user_id 1 ist es nur einen Chat und den Wert von chat_id sollte 2 $ sein wird, von $ user_id_chat 3 sein soll, von $ username sollte 'User3' sein, von $ text sollte 'Wie geht es dir?' und von $ unread_messages sollte 2.
Bitte Beispiel Daten hinzufügen und erwartete Ausgabe –
nach Ihrem Code 'Text' und' unread_messages' nicht abhängig ist '$ user_id_chat'. das bedeutet, dass sie für alle wiederkehrenden Datensätze gleich sind. – Alex
Nein, sie sind nicht für alle zurückkehrenden Datensätze gleich, sie hängen von $ chat_id ab. – user3051755