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

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] aide pour une requête toute simple

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] aide pour une requête toute simple

n°1697445
cbastien41
Posté le 05-03-2008 à 11:14:45  profilanswer
 

hello,
 
j'ai besoin de faire une requête pourtant toute simple, mais le résultat n'est pas bon
 
voici la requête MySQL :
 
SELECT `products`.`products_id`
FROM products, products_to_categories
WHERE (`products`.`products_id` != `products_to_categories`.`products_id`)
ORDER BY `products`.`products_id` ASC
 
je dois, à partir de 2 tables, qui ont un champ en commun, n'affichait que les products_id de la table products n'étant pas dans la table products_to_categories
le résultat doit être 1796 et il me sort 2333765 enregistrements, alors qu'il y en que 2670...
 
ou est mon problème ?
+


Message édité par cbastien41 le 05-03-2008 à 15:04:47
mood
Publicité
Posté le 05-03-2008 à 11:14:45  profilanswer
 

n°1697449
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-03-2008 à 11:18:58  profilanswer
 

Tout d'abord ton problème c'est pas du php mais du sql.
 
Ensuite tu effectues un magnifique produit cartésien entre tes deux tables.
Je te conseille donc de lire ce topic sur les jointures: http://forum.hardware.fr/hfr/Progr [...] m#t1495691


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1697485
cbastien41
Posté le 05-03-2008 à 12:01:04  profilanswer
 

désolé pour l'erreur
 
j'ai besoin de faire directement une requête dans MySQL 5.0.32
 
le produit cartésien de marche pas
j'ai essayé d'autres requêtes du type :
 
SELECT products_id  
FROM products WHERE products_id = ANY (SELECT products_id FROM products_to_categories);
 
mais j'ai toujours une erreur de type :
 
#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '( SELECT products_id FROM products_to_categories )  
LIMIT 0, 3

n°1697513
chakipic
BEEEEAN
Posté le 05-03-2008 à 13:19:09  profilanswer
 

Code :
  1. SELECT products.products_id
  2. FROM products,products_to_categories
  3. WHERE products.products_id != products_to_categories.products_id)
  4. ORDER BY products.products_id ASC


 
et comme ca ?  :o


---------------
Feedback => https://forum.hardware.fr/hfr/Achat [...] 9708_1.htm
n°1697535
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-03-2008 à 13:49:48  profilanswer
 

[:prozac] on va arrêter le massacre là ...

 

Première solution avec une jointure externe:

Code :
  1. SELECT
  2. ...
  3. FROM
  4. products p
  5. LEFT OUTER JOIN products_to_categories pc ON p.products_id = pc.products_id
  6. WHERE
  7. pc.products_id IS NULL


la même avec un not exists ( c'est equivalent en terme de perfs):

Code :
  1. SELECT
  2. ...
  3. FROM
  4. products p
  5. WHERE
  6. NOT exits ( SELECT pc.products_id FROM products_to_categories pc WHERE pc.produtcs_id = p.products_id)
 

Mais je continue à dire que la lecture du post sur les jointures ne serait pas superflue.


Message édité par anapajari le 05-03-2008 à 13:50:19

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1697538
cbastien41
Posté le 05-03-2008 à 13:51:39  profilanswer
 

la requête fonctionne mais il me donne 3232706 enregistrements alors que j'en ai que 2670 !
 
dans une table j'ai 2670 enreg, dans l'autre que 874
et je voudrais n'afficher que les 1796 enreg non présent dans les 2670 !

n°1697540
cbastien41
Posté le 05-03-2008 à 13:57:16  profilanswer
 

merci Anapajari !
j'ai lu le post sur les différentes jointures et je les ai testé
 
pour ton premier exemple, voici l'erreur :
 
MySQL a répondu:  
 
#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '( SELECT pc . products_id FROM products_to_categories pc WHERE  
 
et voici pour le deuxième :
 
MySQL a répondu:  
 
#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '( SELECT pc . products_id FROM products_to_categories pc WHERE  
 

n°1697556
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-03-2008 à 14:24:08  profilanswer
 

c'est deux fois la même erreur :/ :/
t'es sur d'avoir réussi ton copier-coller? D'autant que y'a pas de sous-requête dans la 1ere méthode ...

 

et pis rien ne t'empêche d'essayer de comprendre ce que je fais.
Par exemple, voir que j'ai oublié un s a exiSts c'était pas insurmontable.


Message édité par anapajari le 05-03-2008 à 14:24:29

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1697564
cbastien41
Posté le 05-03-2008 à 14:33:00  profilanswer
 

comme je te l'ai dit, j'ai regardé et testé le lien que tu m'as donné plus d'autres méthodes
 
voici l'erreur complète de ton seconde requête (avec le S)
 
Erreur
requête SQL:  
 
SELECT *  
FROM products p
WHERE NOT  
EXISTS (
 
 
SELECT pc.products_id
FROM products_to_categories pc
WHERE pc.produtcs_id = p.products_id
)
LIMIT 0 , 30  
 
MySQL a répondu:  
 
#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'exists ( SELECT pc . products_id FROM products_to_categories pc  

n°1697582
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-03-2008 à 14:54:51  profilanswer
 

pas possible la syntaxe est bonne(voir la doc )... t'es sur de la version de ton mysql?
Parce que la je pencherais plutot pour une version 3 qui supporte pas les sous-requêtes.

 

Si c'est le cas tu peux toujours utiliser la 1ere syntaxe, tout aussi efficace ( et qui fonctionne).


Message édité par anapajari le 05-03-2008 à 14:55:04

---------------
Software and cathedrals are much the same - first we build them, then we pray.
mood
Publicité
Posté le 05-03-2008 à 14:54:51  profilanswer
 

n°1697587
cbastien41
Posté le 05-03-2008 à 15:03:27  profilanswer
 

je suis en mutu chez OVH
 
MySQL 4.0.25
version du client MySQL 5.0.32
 
je viens de réessayer ta première requête, et çà marche !!! bizarre tout de même, mais je crois que cela venait d'un manque d'espace avant le Where

n°1697588
cbastien41
Posté le 05-03-2008 à 15:03:58  profilanswer
 

merci à toi !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] aide pour une requête toute simple

 

Sujets relatifs
Aide Script PHPquestion simple ds Access
besoin d'aide pour associer les touches clavieraide pour programmer en PL/SQL
[SQL] Pb avec requete SQL MAXligne "total" dans une requête !
ligne total dans une requête[RESOLU] Simplifier mon code de date sur 7 jours dans menu deroulant
[RESOLU] Faire un tableau avec retour dés 4 cellules de suite[Sql] Besoin d'aide pour une requête ( simple pourtant ... ) [résolu]
Plus de sujets relatifs à : [RESOLU] aide pour une requête toute simple


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