MySQL : pb de ram perdue + requetes "sub select"

MySQL : pb de ram perdue + requetes "sub select" - SQL/NoSQL - Programmation

Marsh Posté le 31-01-2004 à 16:52:02    

Bon, je me remets au SQL depuis qques jours, avec mySQL 3.23.49  installé sous WinXP via phpMyAdmin 2.5.5p1.
Premier soucis, et de taille, j'ai des fuites de RAM à cause de winMySqlAdmin : dans le gestionnaire de tâches de WinXP (performances/utlisation du fichier d'échange), ça monte, ça monte... De 180Mo, je suis déjà à 390Mo, et hier, ça a fait planté mon PC à 1.15Go !!  
Il faut que je ferme winMySqlAdmin pour redescendre à 200Mo.
Une idée du pb ? Je suis 'utilisateur avec pouvoir' sur mon PC.
 
D'autre part, j'ai repris mes TP PostgreSQL pour m'aider à faire quelques requètes, et j'ai du mal à croire que mySQL ne supporte pas les requètes imbriquées.
 
J'ai 2 tables, phpwebgallery_images (qui contient le champ 'id')et phpwebgallery_image_category (avec le champ 'image_id'). Eh oui, j'utilisePhpWebGallery !
Comme ma base n'a pas été très bien remplie, j'ai un nbre d'enregistrements dans les 2 tables précédantes. En gros, le fonctionnement de base de phpwebgallery tourne autour de 3 tables : _"category" qui définie les catégories/thèmes des photos, en reprenant les répertoires ; "_images" qui inscrit le nom de fichier et les commentaires de chq photo ; et "_image_category" qui met en relation les photos dans les category (2 champs : "image_id" et "category_id" ).
Donc logiquement, il y a autant d'enregirstrements dans la table "_image_category" que dans la table "_images" puisque chq photo est dans une seule catégorie (enfin, c'est possible de la mettre dans plusieurs catégories, mais cela n'est pas mon cas).
 
Donc, je voudrais donc sélectionner les images qui ne sont pas dans des categories (ma table "image_category" a 1498 entrées contre 1622 dans "images", donc je cherche les 125 erreurs).
J'ai essayé les différentes requètes suivantes mais aucune ne fonctionne (erreur #1064):
 

Code :
  1. SELECT `id` FROM `phpwebgallery_images` WHERE `storage_category_id` <> ALL (SELECT `category_id` FROM `phpwebgallery_image_category`);
  2. SELECT `id` FROM `phpwebgallery_images` WHERE `id` NOT IN (SELECT `image_id` FROM `phpwebgallery_image_category`);
  3. (SELECT `id` FROM `phpwebgallery_images`) EXCEPT (SELECT `image_id` FROM ` phpwebgallery_image_category`);
  4. (SELECT pi.id FROM phpwebgallery_images pi) EXCEPT (SELECT pic.image_id FROM phpwebgallery_image_category pic);
  5. (SELECT pi.id FROM phpwebgallery_images pi) OUTER JOIN (SELECT pic.image_id FROM phpwebgallery_image_category pic);
  6. SELECT pi.id FROM phpwebgallery_images pi
  7. WHERE NOT EXISTS (SELECT *
  8.    FROM phpwebgallery_image_category pic
  9.    WHERE pic.image_id = pi.id);
  10. SELECT pi.id FROM phpwebgallery_images pi
  11. WHERE (SELECT *
  12.        FROM phpwebgallery_image_category pic
  13.        WHERE pic.image_id <> pi.id);
  14. SELECT pi.id
  15. FROM phpwebgallery_images pi
  16. IN (
  17.     SELECT *
  18.     FROM phpwebgallery_image_category pic
  19.     WHERE pic.image_id = pi.id );
  20. SELECT `id`
  21. FROM ´phpwebgallery_images´, ´phpwebgallery_image_category´
  22. WHERE ´image_id´ <> ´id´;


 
Dans la doc mySQL ( http://www.mysql.com/doc/en/Comparison_Operators.html ), certains disent que les sub select ne sont pas possible. Vous confirmez ?
En fait, je suis sur le coup bien surpris des limites de mySQL... (ptet qu'il faut que je passe à la v4 ?) Je pensais postgreSQL / MySQL, c'est kif kif, mais là, non puisque mes requètes précédantes (il y a peut etre qques erreurs d'ailleurs) fonctionnaient bien sous postgreSQL...

Reply

Marsh Posté le 31-01-2004 à 16:52:02   

Reply

Marsh Posté le 01-02-2004 à 01:24:13    

Pour les requêtes imbriquées, regarde la version 4 :)
 
(par contre, je sais pas si la syntaxe sera exactement la même [:figti] )


Message édité par mrbebert le 01-02-2004 à 01:26:03
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed