Bekomme die MYSQL Abfrage nicht hin

fanste

Erfahrenes Mitglied
Hallo.
Ich habe da eine Abfrage gemacht, die mir alle User aus meiner Usertabelle ausliest, die schon einen Beitrag (In der Posttabelle) geschrieben haben. Das klappt auch sehr gut.
Wie aber kann ich eine Abfrage machen, dass mir die User angezeigt werden, die noch keinen Eintrag gemacht haben, also noch nicht in der Posttabelle stehen?

Hier mal der 1. Code:
PHP:
$sql = "SELECT
			u.ALIAS, u.E_MAIL, u.ANMELDEDATUM, u.RANK, COUNT(p.post_id) AS posts
		FROM
			user_daten u, posts p
		WHERE
			p.USER_ID = u.ID //Hier habe ich es im 2. Code geändert
		GROUP BY
			u.ID";

Hier der nichtfunktionierende:
PHP:
$sql = "SELECT
			u.ALIAS, u.E_MAIL, u.ANMELDEDATUM, u.RANK, COUNT(p.post_id) AS posts
		FROM
			user_daten u, posts p
		WHERE
			p.USER_ID != u.ID // Hier ist die Änderung. (!=)
		GROUP BY
			u.ID";

Aber da wird mir was ganzfalsches ausgegeben.
Kann mir da einer Helfen?

mb fanste
 
Probier mal

$sql = "SELECT
u.ALIAS, u.E_MAIL, u.ANMELDEDATUM, u.RANK, COUNT(p.post_id) AS posts
FROM
user_daten u left join posts p on p.USER_ID = u.ID
WHERE
p.USER_ID=NULL
GROUP BY
u.id";
Kann sein, dass die Syntax nicht ganz richtig ist, aber ich hoffe Du erkennst, was ich sagen will :)
 
Herzlichen Dank. Wenn ich eure Vorschläge zusammenmische klappt es einwandfrei.

Hab dann versucht die Beiden Abfragen in eine zusammenzufassen. Hat geklappt. Hier der Code (falls jemand mal das selbe Problem hat)
PHP:
$sql = "SELECT
			u.ALIAS, u.E_MAIL, u.ANMELDEDATUM, u.RANK, COUNT( p.post_id ) AS posts
		FROM
			user_daten u LEFT JOIN posts p ON p.USER_ID = u.ID
		WHERE
			p.USER_ID = u.ID
			OR p.USER_ID IS NULL
		GROUP BY
			u.ID";
 
Zuletzt bearbeitet:
Ich glaube, ohne die WHERE-Klausel erhältst Du in dem Fall das selbe Ergebnis.
Durch die ON-Bedingung des LEFT JOIN ist der erste Teil des WHERE immer erfüllt und durch das Verhalten eines LEFT JOIN ist gegeben, dass p.USER_ID NULL ist, wenn es von dem User keinen Post gibt.

Gruß hpvw
 
Zurück