|
Publicité ' | ||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : janvier 2005 Messages : 70 ![]() |
j'ai 3 tables,
1:artist 2:artist_have_links 3:artists_links voici le shema.yml Code :
Merci d'avance. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
N'avait-on pas déjà regardé et commenté ton schéma ensemble ?
Il m'a induit d'erreur ! En effet, le nom des tables est trompeur et laisse a penser à une liaison n-n sémantique entre artist et artist link. Hors le poids de la table artistHaveLink fait que cette liaison n'est pas justifiable en directe. Je pense que tu aurais intérêt à renommer tes tables ainsi :
Pour ta requête, une fois la structure comprise, la solution est simple. Je vais te mettre sur la piste, si tu ne trouves pas, je te donne la solution dans la foulée. Il faut bien voir que la requêtes part de la table ArtistsLinks vu que c'est ça que tu recherches. En fait tu veux en réponse une liste de ArtistsLinks sans les links d'un user particulier. Donc il faut une requête qui retourne lesArtistsLinks sauf ceux qui sont dans la liste des types d'un utilisateur. En DQL tu vas utiliser le where() et dans celui-ci une condition SQL sur "pas dans" qui est "! IN ()". La particularité intervient ici, il faut inclure entre les parenthèses du IN une requête qui retourne les codes de l'utilisateur en question. Sauf que cette requête doit être écrite en SQL (en effet, le DQL ne peut écrire de sous requête dans une requête). Il faudra donc veiller à utiliser les nom de champs et les nom de tables défini dans la base (et pas dans le schéma), ceux-ci n'étant pas traduit. La requête ne doit retourner qu'un champ, le "id_links". A mon avis, elle ne doit être basée que sur une table. Dans cette sous requête, tu auras un argument variable, l'Id de ton utilisateur, qui sera remplacé par un "?" qui, lui, va remonter au niveau de la méthode where() pour récupérer l'Id en question where('... IN (SELECT ... ? ...', $Id)
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#3 | ||||
|
Membre à l'essai
![]() Inscription : janvier 2005 Messages : 70 ![]() |
je pense avoir trouver une solution a mon probleme,
NOT IN (Select ...) dans la clause where. doctrine permet'il de faire une soustraction entre deux doctrine collection en fonction d'un champs donné? je m'explique: Code :
Code :
ou suije obligé de passer par une requete sql imbriquée avec la clause NOT IN? |
||||
|
|
00
|
|
|
#4 | ||
|
Membre à l'essai
![]() Inscription : janvier 2005 Messages : 70 ![]() |
bon j'ai reussi avec cette requete sql:
Code :
|
||
|
|
00
|
|
|
#5 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
![]() Reste a cliquer sur
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
Copyright © 2000-2012 - www.developpez.com