aide pour une requête toute simple [RESOLU] - PHP - Programmation
Marsh Posté le 05-03-2008 à 11:18:58
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
Marsh Posté le 05-03-2008 à 12:01:04
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
Marsh Posté le 05-03-2008 à 13:19:09
Code :
|
et comme ca ?
Marsh Posté le 05-03-2008 à 13:49:48
on va arrêter le massacre là ...
Première solution avec une jointure externe:
Code :
|
la même avec un not exists ( c'est equivalent en terme de perfs):
Code :
|
Mais je continue à dire que la lecture du post sur les jointures ne serait pas superflue.
Marsh Posté le 05-03-2008 à 13:51:39
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 !
Marsh Posté le 05-03-2008 à 13:57:16
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
Marsh Posté le 05-03-2008 à 14:24:08
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.
Marsh Posté le 05-03-2008 à 14:33:00
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
Marsh Posté le 05-03-2008 à 14:54:51
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).
Marsh Posté le 05-03-2008 à 15:03:27
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
Marsh Posté le 05-03-2008 à 11:14:45
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