J'ai les tableaux suivants: «les données», «data_link`, `user`, `` et `sondage poll_answer». Les tableaux `user`, `` et `sondage poll_answer» ont chacun un champ `id` lesquels ils obtiennent des «données» table. Le «data_link` table des liens seulement deux `id` s ainsi que, par exemple un sondage `et` sa `poll_answer (s).
afin que les données ressemblerait suit:
utilisateur (3) [3 est la `id`].
sondage (12)
poll_answer (13)
poll_answer (14)
dans le «data_link` table `id` s 13 et 14 seront tous deux liés à 12, pour ceux qui sont les deux meilleurs délais »poll_answer` s de «sondage» la question 12.
Quand un «utilisateur» réponses / voix sur un «sondage» question, je lie l'utilisateur `(3) à l'poll_answer` (14) à travers le data_link `table.
Ma requête pour obtenir «sondage d` un utilisateur `a pas voté ne fonctionne pas correctement si, voici ce que j'ai à ce jour:
SELECT DISTINCT(`poll`.`id`)
FROM `poll`
JOIN `data` ON `poll`.`id` = `data`.`id`
JOIN `data_link` ON `poll`.`id` = `data_link`.`link`
JOIN `poll_answer` ON `data_link`.`id` = `poll_answer`.`id`
LEFT JOIN `data_link` AS `data_link_2` ON `poll_answer`.`id` = `data_link_2`.`link`
LEFT JOIN `user` ON `data_link_2`.`id` = `user`.`id`
WHERE `data`.`status` != 'D'
AND (`user`.`id` != 3 OR `user`.`id` IS NULL);
- SELECT DISTINCT(`poll`.`id`)
- FROM `poll`
-
- JOIN `data` ON `poll`.`id` = `data`.`id`
- JOIN `data_link` ON `poll`.`id` = `data_link`.`link`
- JOIN `poll_answer` ON `data_link`.`id` = `poll_answer`.`id`
- LEFT JOIN `data_link` AS `data_link_2` ON `poll_answer`.`id` = `data_link_2`.`link`
- LEFT JOIN `user` ON `data_link_2`.`id` = `user`.`id`
-
- WHERE `data`.`status` != 'D'
- AND (`user`.`id` != 3 OR `user`.`id` IS NULL);
Maintenant ce un peu des œuvres, mais il retournera encore tous les sondages `s id plutôt que seulement ceux que l'utilisateur` a pas voté. La raison en est simple, mais je ne peux pas trouver une solution: La requête joint le poll_answer `s le sondage` et `user` à la poll_answer `, puis-je tout simplement aller là où l'utilisateur` s `id` est pas lié à une réponse. Le problème est, chaque bureau de scrutin `a plus d'un possible« poll_answer `il retourne toujours les réponses que l'utilisateur n'est pas lié à et renvoie donc le scrutin s` id. Je ne peux pas lier l'utilisateur `à tous les poll_answer` s comme alors wouldnt savoir ce que l'utilisateur `a voté.
Je peux soit le lien de l'utilisateur `au scrutin` quand il / elle votes, puis il suffit de cocher sur cette question, ou je pourrais modifier la requête pour obtenir des résultats corrects. Je ne sais pas comment modifier la requête pour obtenir ce dont j'ai besoin afin Id comme d'apprendre à le faire, peut-être l'un de vous pourrait m'aider ici?
Let's leave all our *plum* where it is and go live in the jungle ...