Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2910 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Pour les crack en sql ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pour les crack en sql ...

n°793936
manofjah
Posté le 12-07-2004 à 19:17:00  profilanswer
 

salut !
 
voila j'ai trois tables :
 
mes etablisssement : etb avec comme clé : idetb
mes type d'etablissement : typeetb avec comme clé : idtypeetb
mes type d'etablissement par etablissement (un etablissement peut avoir plusieurs types)  
avec comme clé idetbtypeetb.
 
donc mes tables(colonne1,colonnen)
 
etb (idetb,...)
typeetb (idtypeetb,libtypeetb)
etbtypeetb (idetbtypeetb,idetb,idtypeetb)
 
je recherche les types d'etablissement que NE possede PAS un etablissement donné...
sachant que c'est en mysql et que mysql n'accepte pas les select .... not in (select...)


Message édité par manofjah le 12-07-2004 à 19:20:28
mood
Publicité
Posté le 12-07-2004 à 19:17:00  profilanswer
 

n°794002
gizmo
Posté le 12-07-2004 à 21:25:42  profilanswer
 

Pas testé:
 
SELECT
  libtypeetb
FROM
  typeetb,
  etb INNER JOIN etbtypeetb
  ON (etb.idetb = etbtypeetb.idetb)
WHERE
  etb.idetb = variable
  AND libtypeetb NOT IN idtypeetb
;
 
Par contre, ta clé idetbtypeetb n'a visiblement aucun intérêt dans ton modèle.


Message édité par gizmo le 12-07-2004 à 21:42:29
n°794009
manofjah
Posté le 12-07-2004 à 21:39:57  profilanswer
 

gizmo a écrit :

Pas testé:
 
SELECT
  libtypeetb
FROM
  typeetb,
  etb INNER JOIN etbtypeetb
  ON (etb.idetb = etbtypeetb.idtypeetb)
WHERE
  etb.idetb = variable
  AND libtypeetb NOT IN idtypeetb
;
 
Par contre, ta clé idetbtypeetb n'a visiblement aucun intérêt dans ton modèle.


 
 
je connais pas l'operateur on ...
mais tu joint l'identifiant etablissement avec l'id type etablissement ?
et "AND libtypeetb NOT IN idtypeetb" me parait suspect ...
 

n°794011
gizmo
Posté le 12-07-2004 à 21:43:28  profilanswer
 

effectivement, j'ai fais la jointure sur le mauvais champs (faut dire que tu as cherché a faire des noms particulièrement imbitable)
 
EDIT: J'ai corrigé maintenant.


Message édité par gizmo le 12-07-2004 à 21:43:46
n°794012
manofjah
Posté le 12-07-2004 à 21:45:57  profilanswer
 

gizmo a écrit :

effectivement, j'ai fais la jointure sur le mauvais champs (faut dire que tu as cherché a faire des noms particulièrement imbitable)
 
EDIT: J'ai corrigé maintenant.


 
 
bin je les trouves pas mal moi mes noms  :na:.
ils sont d'une logique imparable en plus je peut generer dysnamiquement mes requetes en fonction du nom de la table vu que c'est hyper extra top normalisé mes nom ...
 
bon a part ca merci du coup de main, :)  je vais tester ....
 

n°794016
manofjah
Posté le 12-07-2004 à 21:48:43  profilanswer
 

SELECT libtypeetb
FROM typeetb, etb
INNER JOIN etbtypeetb ON ( etb.idetb = etbtypeetb.idetb )  
WHERE etb.idetb = 12 AND libtypeetb NOT  
IN idtypeetb
LIMIT 0 , 30  
 
MySQL a répondu:
 
 
#1064 - Erreur de syntaxe près de 'idtypeetb LIMIT 0, 30' à la ligne 5
 
 
 
manifestement il aime pas ton libtypeetb NOT  
IN idtypeetb
je comprend pas d'ailleurs ...

n°794018
gizmo
Posté le 12-07-2004 à 21:52:43  profilanswer
 

C'était un essai san garantie [:spamafote] J'espérais que comme ils n'acceptaient pas les subselect qu'ils auraient implémenté un mécanisme permettant de faire une pirouette et profiter de la jointure sans condition avec typeetb.

n°794020
gizmo
Posté le 12-07-2004 à 21:53:46  profilanswer
 

idée: remplace le NOT IN par <>
 
EDIT: à moins que ce ne soit != dans MySQL


Message édité par gizmo le 12-07-2004 à 21:54:13
n°794044
manofjah
Posté le 12-07-2004 à 22:46:16  profilanswer
 

mais pourquoi tu cherche a comparer un lib a un id  ?

n°794097
gizmo
Posté le 13-07-2004 à 00:02:49  profilanswer
 

Et merde, fais chier avec tes noms à la con!
 
SELECT
  type.id
FROM
  type,
  etablissement INNER JOIN type_etablissement
  ON (etablissement.id = type_etablissement.etablissement_refid)
WHERE
  etablissement.id = variable
  AND type_etablissement.type_refid <> type.id
 
Tu feras tes remplacements de nom à la mords-moi-le-noeud toi-même.

mood
Publicité
Posté le 13-07-2004 à 00:02:49  profilanswer
 

n°794104
jagstang
Pa Capona ಠ_ಠ
Posté le 13-07-2004 à 00:11:20  profilanswer
 

gizmo a écrit :

idée: remplace le NOT IN par <>
 
EDIT: à moins que ce ne soit != dans MySQL


 
http://dev.mysql.com/doc/mysql/fr/ [...] lects.html


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°794105
gizmo
Posté le 13-07-2004 à 00:12:42  profilanswer
 


Et? S'il ne veut pas sous requètes c'est qu'il a une version trop ancienne. Je ne vois donc pas le rapport avec la choucroute.

n°794110
jagstang
Pa Capona ಠ_ಠ
Posté le 13-07-2004 à 00:18:43  profilanswer
 

la version 4.1 est stable depuis quelques mois seulement. je pense que certains hébergeur ne sont pas encore à jour.
 
s'il y a une ancienne version stable installé (p.ex. 4.0.15), il doit utiliser cette syntaxe.
 
je vois pas le rapport avec la bouffe allemande dans ton poste
 
a+


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°794112
gizmo
Posté le 13-07-2004 à 00:20:47  profilanswer
 

la plupart des hébergeurs sont encore en 3.23, alors la 4.1...

n°794115
jagstang
Pa Capona ಠ_ಠ
Posté le 13-07-2004 à 00:21:51  profilanswer
 

justement. raison pour laquelle les NOT IN c'est pas pour demain [:spamafote]


Message édité par jagstang le 13-07-2004 à 00:22:03

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°794511
Profil sup​primé
Posté le 13-07-2004 à 11:51:52  answer
 

Pour revenir sur la remarque de gizmo ...
la clé idetbtypeetb de la table type d'etablissement par etablissement est contraire au formalisme d'un MCD tout simplement parceque la clef de ta table doit etre (idetb,idtypeetb) ... maintenant tu peux tres bien ne pas respecter le formalisme d'un MCD pour des questions de performance!

n°799582
Beegee
Posté le 19-07-2004 à 14:06:27  profilanswer
 

il faut faire un outer join, et une comparaison à NULL en général pour ce genre de requête en mySql 3.X ;)

n°799682
Mara's dad
Yes I can !
Posté le 19-07-2004 à 16:12:51  profilanswer
 

+1 :)
 
Et pas besoin de la table etb dans la requête :
 

SELECT
 typeetb.libtypeetb,
 typeetb.idtypeetb,
 etbtypeetb.idetb
FROM
 typeetb LEFT JOIN etbtypeetb
  ON
  (
   typeetb.idtypeetb = etbtypeetb.idtypeetb
   AND etbtypeetb.idetb = 12
  )
WHERE
 etbtypeetb.idetb IS NULL


 
LEFT JOIN, ça veux dire que je veux tous les enregs de la table typeetb, même s'il n'y a pas de correspondance dans la table etbtypeetb pour l'établissement d'id 12.
 
Pour les enregistrements manquants, la valeur des champs sera NULL.
 
Il suffit donc de sélectionner ceux là !
 
Testé et approuvé par Moi-Même sur Mysql 3.23.47


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°799694
Mara's dad
Yes I can !
Posté le 19-07-2004 à 16:19:16  profilanswer
 

gizmo a écrit :

Et merde, fais chier avec tes noms à la con!
 
SELECT
  type.id
FROM
  type,
  etablissement INNER JOIN type_etablissement
  ON (etablissement.id = type_etablissement.etablissement_refid)
WHERE
  etablissement.id = variable
  AND type_etablissement.type_refid <> type.id
 
Tu feras tes remplacements de nom à la mords-moi-le-noeud toi-même.


 
:pt1cable: gizmo, tu me déçois de plus en plus :o


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Pour les crack en sql ...

 

Sujets relatifs
crack pour Sothink DHTMLMenucrack de logiciel
Cherche Crack pour Jaws 4.02laide je cherche le crack de billpro 5.31
A tous la subtil : crack fichier word?? 
Plus de sujets relatifs à : Pour les crack en sql ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR