Ist es möglich, mehr als einen CASE-MySQL-Left-Join durchzuführen?Php

PHP-Programmierer chatten hier
Guest
 Ist es möglich, mehr als einen CASE-MySQL-Left-Join durchzuführen?

Post by Guest »

Ich versuche, mehr als drei Tabellen in meiner Datenbank abzufragen, um am Ende ein JSON-Ergebnis zu erhalten. Bisher kann ich ein CASE hinzufügen, um ein resultierendes Feld hinzuzufügen, und es funktioniert gut, aber ich würde gerne ein weiteres hinzufügen. Der folgende Code funktioniert, jedoch nur für das Feld „isLiked“. Ich möchte ein „hasViewed“ aus einer anderen Tabelle namens „viewed“ hinzufügen, die dieselbe Struktur wie „viewed“ hat

Code: Select all

$logged_user = mysqli_real_escape_string($conn, $_GET["logged_user"]);

$sql = "
SELECT
u.*,
(
3959 * acos(
cos(radians(52.41357)) *
cos(radians(u.lat)) *
cos(radians(u.lng) - radians(-1.51314816)) +
sin(radians(52.41357)) *
sin(radians(u.lat))
)
) AS distance,
CASE
WHEN l.to_user IS NOT NULL THEN 'true'
ELSE 'false'
END AS isLiked
FROM clients u
LEFT JOIN likes l
ON u.userID = l.to_user
AND l.from_user = '$logged_user'
HAVING distance < 10
ORDER BY distance
LIMIT 99";

$result = mysqli_query($conn, $sql) or die("Error in Selecting " . mysqli_error($conn));

$userOnlineStatus = array();
while ($row = mysqli_fetch_assoc($result)) {
$userOnlineStatus[] = $row;
}

echo json_encode($userOnlineStatus);
Ich habe es mit begrenztem Erfolg versucht.
Ich habe das Feld „hasViewed“ hinzugefügt und füge es hinzu, aber es ist das gleiche Ergebnis wie bei „isLiked“: -

Code: Select all

    CASE
WHEN l.to_user IS NOT NULL THEN 'true'
ELSE 'false'
END AS hasViewed
Ich habe versucht, einen neuen LEFT JOIN hinzuzufügen:-

Code: Select all

LEFT JOIN viewed l
ON u.userID = l.to_user
AND l.from_user = '$logged_user'
Also habe ich versucht: -

Code: Select all

 CASE
WHEN l.to_user IS NOT NULL THEN 'true'
ELSE 'false'
END AS isLiked,

CASE
WHEN 2.to_user IS NOT NULL THEN 'true'
ELSE 'false'
END AS hasViewed

FROM clients u

LEFT JOIN likes l
ON u.userID = l.to_user
AND l.from_user = '$logged_user',

LEFT JOIN viewed 2
ON u.userID = 2.to_user
AND 2.from_user = '$logged_user'
Ich erhalte diesen Fehler:-

Schwerwiegender Fehler: Nicht erfasste mysqli_sql_Exception: Sie haben einen Fehler in Ihrem
SQL-Syntax; Überprüfen Sie im Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von „to_user IS NOT NULL THEN
'true' ELSE 'false' END AS hasViewed ...' in Zeile 19 inC:\Users\julia\OneDrive\Desktop\XAMPP\htdocs\info2.php:46 Stack Trace:
#0 C:\Users\julia\OneDrive\Desktop\XAMPP\htdocs\info2.php(46): mysqli_query(Object(mysqli), '\r\nSELECT \r\n ...') #1 {main} thrownin C:\Users\julia\OneDrive\Desktop\XAMPP\htdocs\info2.php in Zeile 46

Ist das möglich oder muss ich einen anderen Ansatz ausprobieren, der im Grunde alles ist, was ich frage.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post