Voici le code que j'ai actuellement:Sélectionnez 2 lignes du tableau lorsque le nombre d'une autre table
SELECT `A`.*
FROM `A`
LEFT JOIN `B` ON `A`.`A_id` = `B`.`value_1`
WHERE `B`.`value_2` IS NULL
AND `B`.`userid` IS NULL
ORDER BY RAND() LIMIT 2
Ce qu'il est actuellement censé faire est de sélectionner 2 lignes de A
lorsque les 2 lignes A_id
étant sélectionnées sont pas dans value_1
ou value_2
dans . Et les lignes dans B
sont spécifiques aux utilisateurs individuels avec userid
.
Ce que je dois faire est de le faire aussi pour que vérifie également s'il y a déjà N lignes B
correspondant à un A_id
(dans value_1
, ou value_2
) et userid
, et s'il y a plus de N lignes, il doesn ne sélectionnez pas la ligne A
.
Merci Thomas! Cela fonctionne, pour la plupart. Sauf que je reçois parfois la même ligne retourne deux fois (il ne devrait jamais avoir la même ligne retourne deux fois), et parfois il retourne des lignes que le '' B2.value_1 = A.A_id ou B2.value_2 = A.A_id' " devrait l'empêcher de le faire. Habituellement, il semble qu'ils sont dans l'ordre différent quand ils le sont. – Marcus
@Marcus - De quelle requête? La première requête ne doit jamais renvoyer plus d'une valeur PK pour A. Si vous pensez qu'elle renvoie plusieurs fois la même ligne (même ligne de quoi?), Pouvez-vous nous montrer un exemple d'entrée et la sortie qu'elle produit? – Thomas
Oh, je vois ce que j'ai fait ... Je vous ai mal compris et combiné vos deux requêtes ... Oups. Je l'ai maintenant du travail. Merci encore! – Marcus