Hallo,

Ik heb 2 tabellen, 1 met users en de ander waarin de user_id wordt gebruikt.

Nou wil ik eerst weten of een ID in tabel 1 voorkomt, zo ja of ie ook in tabel 2 voorkomt.
Ik dacht dat ik het had, maar het werkt toch niet helemaal naar behoren.

Iemand die mij op weg kan helpen?

Bvd


<?php
$sql = "
SELECT
	COUNT(u.id) AS num_uid
	,COUNT(v.user_id) AS num_vuser_id
FROM
	" . TABLE_PREFIX . "users AS u
INNER JOIN
	" . TABLE_PREFIX . "viewers AS v
WHERE
	(
		(
			u.id = :user_id
			AND v.user_id = :user_id
		)
	OR
		u.id = :user_id
	)
";
?>



<?php
if($row['num_uid'] > 0)
{
	if($row['num_vuser_id'] > 0)
	{

	}
}
?>


Toevoeging op 03/04/2014 15:50:18:

Ah, volgens mij heb ik het antwoord hier gevonden.

Alleen snap ik niet helemaal wat het nou doet. 1 = true, 0 = false neem ik aan.
Bij false is num_uid dan 0, en bij true het aantal rijen of alleen 1?
Als het aantal niet belangrijk is, maar alleen of het bestaat, is SUM() dan onnodig?

[code]
$sql = "
SELECT
SUM(if(u.id = :user_id AND u.active = 1, 1, 0)) AS num_uid
,SUM(if(v.user_id = :user_id, 1, 0)) AS num_vuser_id
FROM
" . TABLE_PREFIX . "users AS u
INNER JOIN
" . TABLE_PREFIX . "viewers AS v

";
[/code[
Omdat u.id in het resultaat niet unique hoeft te zijn, maak de query maar eens zonder de counts.
Nee ik zie het. Was het even aan het uittesten.
Ziet er goed uit. Nogmaals bedankt.

user_id in users
	num_uid 1 num_vuser_id 0

user_id in viewers of in geen van beide
	num_uid 0 num_vuser_id 0

user_id in users en viewers
	num_uid 1 num_vuser_id 1

user_id in users en twee keer in viewers
	zonder distinct
		num_uid 2 num_vuser_id 2

	met distinct
		num_uid 1 num_vuser_id 2


<?php
$sql = "
SELECT
COUNT(DISTINCT u.id) AS num_uid
,COUNT(v.user_id) AS num_vuser_id
FROM
" . TABLE_PREFIX . "users AS u
LEFT JOIN
" . TABLE_PREFIX . "viewers AS v
ON u.id = v.user_id
WHERE
u.id = :user_id
AND u.active = 1
";
?>

Reageren