[RESOLU] Retourner les ID différents de...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Retourner les ID différents de...

Re: [RESOLU] Retourner les ID différents de...

par Furax » 17 oct. 2014, 14:51

Autant pour moi je n'avais pas fait attention qu'il y avait un tel bouton.

Re: Retourner les ID différents de...

par moogli » 17 oct. 2014, 11:14

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.

Re: Retourner les ID différents de...

par Furax » 17 oct. 2014, 10:26

Merci pour ces réponses.
J'ai modifié un peu la première solution car elle ne fonctionnait pas directement (pas facile sans avoir les tables sous les yeux ;)).

Voici une requête qui fonctionne au poil:
SELECT DISTINCT r.id, r.titre, r.id_type, t.type FROM recettes r, types t WHERE r.id NOT IN (SELECT DISTINCT id_recette FROM personnes_recettes WHERE id_personne=17) AND t.id=r.id_type ORDER BY t.ordre ASC, r.titre ASC
Merci beaucoup!
Je vais aller lire le tuto sur les jointures car ça a toujours été mon problème ça, et je vais en avoir sérieusement besoin pour la suite de mon projet...

Re: Retourner les ID différents de...

par yann18 » 16 oct. 2014, 17:27

une autre proposition
SELECT DISTINCT r.id, r.titre, r.id_type, t.type FROM recettes r
JOIN types t ON t.id=r.id_type
LEFT JOIN personnes_recettes p ON r.id=p.id_recette
WHERE p.id_recette IS NULL OR p.id_recette=''
AND p.id_personne=18

Re: Retourner les ID différents de...

par fab'blab » 16 oct. 2014, 17:14

Hum non en fait la requête que j'ai proposée provoquera la même erreur :(

Une autre solution sera peut-être de passer par une sous-requête plutôt qu'une jointure, exemple :
SELECT DISTINCT r.id, r.titre, r.id_type, t.type FROM recettes r, types t WHERE  r.id_recette not in (SELECT DISTINCT id_recette from personnes_recettes where id_personne='18')  AND r.id=p.id_recette AND t.id=r.id_type
A tester...

Ou bien regarder du côté des jointures de type "LEFT JOIN" et "RIGHT JOIN"
Un bon tuto : http://www.epershand.net/developpement/ ... join-mysql

Re: Retourner les ID différents de...

par fab'blab » 16 oct. 2014, 16:40

Salut,

Si j'ai bien compris ce que tu cherches à faire, la bonne requête serait plutôt :
SELECT DISTINCT r.id, r.titre, r.id_type, t.type FROM recettes r, personnes_recettes p, types t WHERE p.id_personne!='18' AND r.id=p.id_recette AND t.id=r.id_type

Retourner les ID différents de...

par Furax » 16 oct. 2014, 15:11

Bonjour,

J'ai un souci avec une requête SQL qui ne fonctionne que dans un sens...
Dans le principe j'ai 3 tables:
- Recettes
- Types
- Personnes_recettes qui fait la relation entre les personnes et les recettes qui leur ont déjà été faites. (par exemple l'IDPersonne 17 va avec le plat d'ID 10)

Je veux faire une requête qui soit me retourne tous les plats faits pour une personne, soit l'inverse, les plats pas encore fait pour une personne.
SELECT DISTINCT r.id, r.titre, r.id_type, t.type FROM recettes r, personnes_recettes p, types t WHERE p.id_personne='18' AND r.id=p.id_recette AND t.id=r.id_type
Si je laisse "r.id=p.id_recette" il me sort bien le résultat qu'il faut
En revanche si je mets "r.id!=p.id_recette", alors là il me sort tous les résultats, même ceux qui sont égaux

Une idée?

merci!