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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete imbriquée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

requete imbriquée

n°1572875
puisquetur​epondspas
Posté le 10-06-2007 à 15:30:11  profilanswer
 

bonjour
 
peut t on faire des requete imbriquée sous easy php 6 ou 7?
j'ai fais une requete sous EMS elle fonctionne bien (sûr)
pourquoi sous easy php ne fonctionne t elle pas, il me dit erreur de syntaxe
 
ex select  count(1) from (select a table group by a)) t
 
ou  
 
insert into FICHE_TEMP
(`fic_num`,`fic_id`, `fic_dom1`, `fic_sdom1`)
select fiche.fic_num,fiche.fic_id, df.id_domaine, df.id_ss_domaine
from `fiche_fic` fiche JOIN `dom_fiche_df` df
on fiche.fic_num = df.id_fiche
group by df.id_fiche
union
select fiche.fic_num,fiche.fic_id,NULL,NULL
from `fiche_fic` fiche
where  fiche.fic_num not in (SELECT df.id_fiche from `dom_fiche_df` df);
 
est ce que j'ai mal installé easy php, peu probable , est ce pas possible de faire de telle requete sous easy php, ça m'etonnerait?
pouvez vou m'aider Merci c'est embetant!!
 

mood
Publicité
Posté le 10-06-2007 à 15:30:11  profilanswer
 

n°1572912
sim_mmm
Posté le 10-06-2007 à 17:45:51  profilanswer
 

Sa dépend de la version de mysql installé avec cette version de easyphp? Les vieilles versions ne supportaient pas les sous-requêtes si je ne m'abuse. Par contre, si tu as la version 5 de mysql, elle devrait fonctionner....
 
Maintenant, les deux requêtes que tu soumet semble avoir des erreur de syntaxe (à mon avis) du moins la première à une parenthèse fermante de trop et pour la deuxième je ne suis pas certain qu'elle est correcte  entre autre je crois qu'il manque des parenthèses pour ton encadrer les deux requêtes constituant ton union?

n°1573054
MagicBuzz
Posté le 11-06-2007 à 10:36:06  profilanswer
 

première requête : il manque pas un from par hasard ?
seconde requête : je vois pas trop ce qui cloque mais... INNER JOIN quand on fait un simple "join" (parceque "join" tout c'est pas c lair) et surtout, un bete "left outer join" te permet d'éviter le UNION totalement inutile.
 
ensuite, lit la doc sur "group by" et arrête de l'utiliser à toutes les sauces pour rien.

n°1573069
cgo2
Dum spiro spero
Posté le 11-06-2007 à 10:46:40  profilanswer
 

MagicBuzz a écrit :

INNER JOIN quand on fait un simple "join" (parceque "join" tout c'est pas c lair)


 
C'est juste une question de clareté ou y'a un impact sur quelquechose ? Parceque si c'est juste pour la clareté, vu que "JOIN" est utilisée pour tout type de jointure, moi je trouve ça beaucoup plus clair de préciser le type à chaque fois, même si c'est celui par défaut.


---------------
When it's from Finland it's good.  - Mon blog
n°1573072
MagicBuzz
Posté le 11-06-2007 à 10:48:51  profilanswer
 

c'est ce que je viens de dire.
 
join tout court, c'est équivalent à inner join (plus exactement, ça fait un cross join (produit cartésien), mais qui accepte la clause "on" afin de faire un inner join). en effet "cross join" est le type de jointure par défaut.
 
mettre "inner join", c'est rendre la requête lisible, et garantir qu'il y a bien une clause "on" derrière, ça évite les erreurs stupides.
 
http://forum.hardware.fr/hfr/Progr [...] m#t1495691
 
http://img166.imageshack.us/img166/4759/ensemblesah8.png

Message cité 1 fois
Message édité par MagicBuzz le 11-06-2007 à 10:50:50
n°1573078
cgo2
Dum spiro spero
Posté le 11-06-2007 à 10:53:21  profilanswer
 

MagicBuzz a écrit :

c'est ce que je viens de dire.


 
arf ok je suis pas bien reveillé :pt1cable:


---------------
When it's from Finland it's good.  - Mon blog
n°1573087
puisquetur​epondspas
Posté le 11-06-2007 à 11:02:51  profilanswer
 

oui merci des réponse j'ai écrit trop vite la premiere requete, j'ai fait involontairement des erreurs de syntaxe
je voulais écrire : par ex  " select count(1) from
(select id_fiche from `dom_fiche_df`
group by id_fiche having count(id_fiche)>=2) t "
 
je vais verifier ma versions de mon mysql et je peux le mettre à jour ou il faut que je réinstalle tout?
 
merci pour le conseil inner join
 
pour la seconde requete en utilisant un outer join il m'indiquait une erreur ligne machin à cause des null et du group by, j'obtenais pas le meme resultat qu'avec mon union!
 
a+

n°1573091
MagicBuzz
Posté le 11-06-2007 à 11:06:51  profilanswer
 

pour la seconde requête, tu mets "left outer join", tu vire tout à partir de "group by" (que tu vires aussi) et normalement t'as exactement le même résultat...
 

Code :
  1. SELECT fiche.fic_num,fiche.fic_id, df.id_domaine, df.id_ss_domaine
  2. FROM fiche_fic fiche LEFT OUTER JOIN dom_fiche_df df ON fiche.fic_num = df.id_fiche


 
sinon, pour en revenir au problème initial...
 
regarde la version de MySQL. MySQL ne supporte les requêtes imbriquées que depuis la version 4.1
Ceci dit, ça m'étonne grandement que tu puisses avoir une version plus ancienne, ça fait un bail que tout le monde est en 4.x ou 5.x...


Message édité par MagicBuzz le 11-06-2007 à 11:08:08
n°1573329
puisquetur​epondspas
Posté le 11-06-2007 à 16:35:57  profilanswer
 

pour ma version je l'ai installé en 2005 c'est sûrement la bonne ou j'ai fais une erreur de syntaxe ou j'ai un autre problème je vais réinstaller
 
merci pour l'ex de la seconde requete mais j'étais obliger d'utiliser un group by
 
a bientot

n°1574432
puisquetur​epondspas
Posté le 13-06-2007 à 14:57:58  profilanswer
 

j'ai dû avoir un bug ds easy pfp version 7, j'ai réinstaller la 8 et maintenant ça marche merci

mood
Publicité
Posté le 13-06-2007 à 14:57:58  profilanswer
 

n°1589951
maestro130​3
Posté le 23-07-2007 à 10:17:04  profilanswer
 

Bonjour à tous,
J'utilise mysql 4.1.9 et je veux utliser "not in" qui ne marche visiblement pas. je veux avoir un sous ensemble du résultat de cette requête:
 
select at__ft.prov, at__ft.prefix, at__ft.cost, at__tlf.cost
FROM at__ft, at__tlf where (at__ft.prefix = at__tlf.prefix)  
 
c'est à dire les valeurs at_ft_prefix qui ne soient pas dans laliste suivante:
(SELECT at__ft.prefix
FROM `at__mar` , at__ft, at__tlf
WHERE (
at__ft.prefix = at__mar.prefix
)
AND (
at__ft.prefix = at__tlf.prefix
)
 
Si j'imbrique les deux ça me sort une erreur
 
select at__ft.prov, at__ft.prefix, at__ft.cost, at__tlf.cost
FROM at__ft, at__tlf where (at__ft.prefix = at__tlf.prefix)  
and not in (SELECT at__ft.prefix
FROM `at__mar` , at__ft, at__tlf
WHERE (
at__ft.prefix = at__mar.prefix
)
AND (
at__ft.prefix = at__tlf.prefix
)
 quelqu'un peut il m'aider.
 
Merci infiniment

n°1589962
jpcheck
Pioupiou
Posté le 23-07-2007 à 10:37:57  profilanswer
 

rajoute at_ft_prefix  avant le not in...


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

  requete imbriquée

 

Sujets relatifs
[SQL]Erreur requête imbriquéejointure et requete imbriquée?
tous les emplacements possibles pour une requete imbriquée?[ MySQL ] Requête imbriquée ???
Erreur SQL 1064 : Requête imbriquée avec jointure !!!Requête imbriquée avec DATE_FORMAT()
requete Imbriquée[MYSQL]probleme requete imbriquée
Problème de date dans requête imbriquée[SQL Server] Requete imbriquée et retour des X premiers enregistrement
Plus de sujets relatifs à : requete imbriquée


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