Selection si pas déjà dans une autre table [updated] [MYSQL5] - SQL/NoSQL - Programmation
Marsh Posté le 20-04-2006 à 01:10:24
Code :
|
Si tu n'a pas le MINUS, tu peux faire une jointure externe, et récupéré tous les magasins dont la résultat de la jointure est nul (minus mysql dans google doit donner des exemples)
Marsh Posté le 20-04-2006 à 01:20:43
Merci, je check de suite
Je n'ai en revanche rien touvé sur la doc mysql pour minus
Marsh Posté le 20-04-2006 à 01:25:59
J'en suis là :
Code :
|
Edit : Et voila Merci pour tous
Code :
|
ps : Ceci dit, je n'ai pas réussi à faire fonctionner le MINUS
Marsh Posté le 20-04-2006 à 16:41:47
bah, apparament, il n'y a pas encore MINUS sur Mysql (sur d'autre SGBD je crois que si)
http://mysql.developpez.com/faq/?p [...] ITE_except
http://forums.mysql.com/read.php?61,22323,22323
Marsh Posté le 20-04-2006 à 16:52:48
MINUS existe sur Oracle mais pas sur MySQL. Mais un NOT EXISTS peut le remplacer tout aussi facilement
Marsh Posté le 09-05-2006 à 15:19:11
Ah les boules, ma requete ne fonctionne pas sous mysql4.0
Pourtant NOT EXISTS est bien présent dans la doc de cette version, une idée ?
Erreur de syntaxe près de 'EXISTS ( select `id_user2magasin` from `users2magasins` where `u' à la ligne 1
Marsh Posté le 09-05-2006 à 23:11:10
Tu veux renvoyer les magasins dont l'id est dans la table "magasins" mais pas dans la table "users2magasins
Code :
|
Marsh Posté le 10-05-2006 à 00:58:56
Ah pas mal, j'ai donc fait :
Code :
|
Mais sous MySQL 4.0.20-standard j'ai #1064 - Erreur de syntaxe près de 'SELECT id_magasin FROM users2magasins )
LIMIT 0, 30' à la ligne 1
C'est fou ça, pourtant ça devrait fonctionner à en croire la doc
Edit :Alors qu'en local (win5.1,php5.1,mysql5.0,apache2) ça fonctionne
Marsh Posté le 10-05-2006 à 13:15:43
essaye ça
http://dev.mysql.com/doc/refman/5. [...] eries.html
En plus, EXISTS est plus perfs que IN si je ne m'abuse.
Marsh Posté le 10-05-2006 à 13:49:05
ca dépend des cas et des volumétries de table, tu peux avoir un EXIST meilleur qu'un IN dans un cas particulier et le contraire dans un autre.
le meilleur moyen de savoir : tester
Marsh Posté le 10-05-2006 à 14:26:25
bon, j'ai essayer de faire comme dans la doc, mais rien n'y fait.
SELECT DISTINCT magasins.id_magasin FROM magasins
WHERE NOT in (SELECT * FROM magasins
WHERE magasins.id_magasin = users2magasins.id_magasin);
C'est possible que ça vienne de la config de mysql ?
Marsh Posté le 10-05-2006 à 17:17:18
Ca, c'est normal, la requête est pas bonne. Il faut lui dire ce qu'il doit rechercher dans la sous-requête
Marsh Posté le 10-05-2006 à 17:33:03
KdZ' a écrit : Ah pas mal, j'ai donc fait :
|
Alors si j'ai bien compris, tu as une BDD locale mysql 5. Tout fonctionne.
Tu as une BDD distante mysql 4. Ca ne marche pas.
Utilise-tu bien les même requêtes pour tes deux tests car quand je vois ça j'ai un gros doute :
Citation : Mais sous MySQL 4.0.20-standard j'ai #1064 - Erreur de syntaxe près de 'SELECT id_magasin FROM users2magasins ) |
et deux posts plus bas haut
Citation : Erreur de syntaxe près de 'EXISTS ( select `id_user2magasin` from `users2magasins` where `u' à la ligne 1 |
Tu n'aurais pas un problème de nommage de tes champs par hasard ?
Tes BDD sont identiques ?
Tu les a repliqué à la main ?
Marsh Posté le 10-05-2006 à 18:01:17
J'ai fait un export compatible mysql4.0 phpmyadmin.
Tout c'est bien passé et les relations sont bien là.
Je refait un test avec la même requete pour les deux bases de suite...
mais je suis sur de l'avoir déjà fait, je n'y comprend rien.
Bon a tout de suite
Edit : Bon voila, j'ai bien vérifié, toutes les tables sont là, les données aussi.
Et avec la même requete qui fonctionne en local mysql5.0 :
Code :
|
rien n'y fait pour mysql4.0
#1064 - Erreur de syntaxe près de 'EXISTS ( select `id_user2magasin` from `users2magasins` where `u' à la ligne 1
Marsh Posté le 10-05-2006 à 18:57:22
Tiens, je viens de m'apercevoir que l'export/import a oublié les auto increment
Tout est ok et identique mais idem
Marsh Posté le 10-05-2006 à 19:00:02
la sous requête à part fonctionne ?
mysql 4.0 supporte les sous requêtes ?
Marsh Posté le 10-05-2006 à 22:32:31
Oui mais en rajoutant from magasins bien sur
Marsh Posté le 20-04-2006 à 00:59:35
Salut,
Je coince sur un truc surement très con , en fait disons que je veux selectionner tous les magasins, sauf ceux déjà enregistrés dans une table.
Exemple :
J'ai une table magasins, et une autre user2magasin, je veux selectionner tous les membres qui ne sont pas dans la table user2magasin.
J'ai donc essayer not like et bien d'autres encores mais rien n'y fait, j'arrive a rien
Uné idée ?
Voici mon code actuel (Qui renvoit des doublons en faite )
Message édité par KdZ' le 09-05-2006 à 15:19:28