Ich habe eine Wordpress-Site, die verwendet wird, um Noten von Schülern in verschiedenen Lektionen zu speichern (aus den Tests auf der Website). Ich versuche, eine Abfrage zu erstellen, die alle Lektionen für alle Schüler einer bestimmten Gruppe (mit Buddypress-Gruppen) und die Noten der Schüler in jeder Lektion herauszieht.Ergebnisse erhalten, wenn Wert "Klasse" ist oder wo es nicht existiert
Ich habe diese Abfrage erstellt:
SELECT u.display_name, p.post_title, cm.meta_value
FROM wp_users u
JOIN wp_bp_groups_members gm
ON u.ID = gm.user_id
JOIN wp_comments c
ON u.ID = c.user_id
JOIN wp_commentmeta cm
ON c.comment_ID = cm.comment_id
JOIN (SELECT * FROM wp_posts WHERE post_type LIKE 'lesson') p
ON c.comment_post_id = p.ID
WHERE gm.group_id = 4 AND cm.meta_key LIKE 'grade'
Das derzeit alle Qualitäten für alle Schüler in einer Gruppe gibt in den Lektionen, die sie den Test versucht haben. Es gibt jedoch keine Lektionen zurück, in denen sie den Test nicht versucht haben, was ich noch brauche.
Nur um klar zu sein: Lektionen sind Beiträge, Noten sind Metawerte in einem Datensatz mit einem Meta-Schlüssel von "Noten". Diese werden als Kommentare und comment_meta gespeichert.
Ich hoffe, das ist alles klar und Sie können helfen. Vielen Dank.
Nach Ollie Jones Hilfe habe ich dies:
SELECT u.display_name, p.post_title, IFNULL(cm.meta_value,'--nothing--') grade
FROM wp_users u
JOIN wp_comments c
LEFT JOIN wp_commentmeta cm
ON c.comment_ID = cm.comment_id AND cm.meta_key = 'grade'
JOIN wp_bp_groups_members gm
ON u.ID = gm.user_id
JOIN wp_posts p
ON c.comment_post_id = p.ID
WHERE gm.group_id = 4 AND p.post_type LIKE 'lesson'
die fast funktioniert, aber alle Schülernoten gibt, nicht nur die, die in der Gruppe (obwohl es nur gibt den einen Namen der Schüler in der Gruppe) .
Danke für die Hilfe, es hat mich definitiv näher gebracht. Ich habe meiner Frage einen Bearbeitungsschritt hinzugefügt, da ein Problem aufgetreten ist. – DanR
Ich markiere das so korrekt, wie es mich zu der Antwort geführt hat. Ich musste links sowohl wp_comments und wp_commentmeta beitreten. Danke. – DanR
ah, danke, dass du es herausgefunden hast. Ich habe meine Antwort aktualisiert. –