Ich erhalte diese Fehlermeldung:SQL-Fehler mit einem CTE
Abfragefehler: Sie haben einen Fehler in der SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion für die richtige Syntax entspricht, die in der Nähe von '; WIT Convs AS (wählen Sie c.id, c.title, c.seen, c.id_receiver, c.id_send' in Zeile 1
wenn ich diese Abfrage:
$query = ";WITH convs AS (
select c.id, c.title, c.seen, c.id_receiver, c.id_sender
from conversations c
)
select id, title, seen, id_receiver, id_sender
from convs
where id_receiver = '5'
order by title desc limit 0,25";
$res = mysqli_query($connection ,$query);
ich bin etwas fehlt Ihre Hilfe sehr geschätzt werden würde
PS: i. minimiert die Abfrage für diesen Zusammenhang ist es einfach zu machen, wenn Sie mir helfen Finden Sie die Lösung, ich habe vielleicht ein anderes Problem mit der vollständigen Abfrage. Also könnte ich Ihnen für weitere Hilfe zurückkommen. Vielen Dank im Voraus.
EDIT (GANZ QUERY)
$query = "WITH convs AS (
select c.id, c.title, c.seen, c.id_receiver, c.id_sender,
(select max(date) from messages where id_conversation = c.id and id_user <> '$iduser') as last_msg,
(select top 1 id_user from messages where id_conversation = c.id and id_user <> '$iduser' order by date desc) as last_user,
(select count(distinct id_user) from messages where id_conversation = c.id) as nbruser,
(select count(*) from messages where id_conversation = c.id) as nbrmsg,
(select username from users where id = c.id_sender) as sender, (select username from users where id = c.id_receiver) as receiver,
(select count(*) from deleted_conversations where id_user='$iduser' and id_conversation=c.id) as deleted,
from conversations c
)
select id, title, seen, id_receiver, id_sender, receiver, sender, last_msg, last_user, deleted, nbruser, nbrmsg
from convs
where (id_receiver = '$iduser' or (id_sender == '$iduser' and nbruser > 1)) and deleted = 0
order by last_msg desc limit $pageLimit,$REC_PER_PAGE";
Was mich CTE zu verwenden geschoben, ist die Notwendigkeit von Alias-Namen in where-Klausel verwenden. Und wie Sie sehen können, habe ich viele von ihnen.
Können Sie mir ein Beispiel für die Verwendung von Sichten/temporären Tabellen geben, um meinen Zweck zu erreichen?
Ich denke, wir order by-Klausel fehlen. Du hast direkt Desc geschrieben. –
@I_am_Batman in meinem tatsächlichen Code, es ist vorhanden, aber immer noch nicht funktioniert. Ich habe es hier einfach vertippt (ich habe die Frage bearbeitet). – codeless
Ist das immer noch ein Tippfehler, den Sie nach Bestellung nicht mit einem Spaltennamen versehen haben? –