IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Special query SELECT * FROM CASE WHERE ORDER


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Special query SELECT * FROM CASE WHERE ORDER
    Bonjour,

    Je veux utiliser une requête comme celle ci mais un truc ne va pas


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      SELECT CONCAT(`id`, ';', `title`) as `row`
        FROM
        CASE WHEN ('yes' IN (SELECT `value` FROM `mod_infoprod_core` WHERE `variable` = 'use_main_table' LIMIT 1))
    		THEN `mod_infoprods_ids`
            ELSE `plugin_infoprods_ids`
         END
       WHERE `i18n` = 'en'
    ORDER BY `title` ASC


    Donc: sélectionner concat des champs id;title comme 'row' depuis table case si use_main_table = 'yes' utilise la table mod_infoprods_ids si non plugin_infoprods_ids end where language = 'en' order by title....

    Puis-je avoir du l'aide? Merci d'avance


    ________________________________________________

    J'ai du opter pour la création d'une requête bien complexe. et modification de la structure des tables. Merci de temps accordée...

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    A ma connaissance, tu n'as pas le droit d'utiliser une structure CASE WHEN THEN ELSE END dans la clause FROM d'une requête.
    Il va falloir composer soit avec des jointures, soit plutôt, me semble-t'il, avec UNION.
    Pour choisir, il faudrait savoir si des couples id-title peuvent se retrouver dans les deux tables à la fois.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il me semble plus facile de créer la requête en fonction des critères dans le langage de programamtion du programme qui utilise la BDD plutôt que de vouloir le faire avec SQL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    C'est à dire que le propos n'est pas limpide. Si l'on savait comment faire une jointure filtrante entre les tables `mod_infoprods_ids` et `mod_infoprod_core` on pourrait s'en sortir avec une requête en jointure sur ces deux tables et une UNION avec une requête simple sur la table `plugin_infoprods_ids`.
    Mais là on sait juste comment filtrer la table `mod_infoprod_core` mic
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    'yes'=mic.`value` AND mic.`variable`='use_main_table'
    mais rien sur comment faire la jointure avec la table `mod_infoprods_ids`
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut infos complémentaires
    C'est dans du PHP5

    ... Voici la structure des tables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    CREATE TABLE IF NOT EXISTS `modules_articles_ini` (
      `variable` varchar(255) NOT NULL COMMENT 'variable name',
      `value` TINYTEXT NOT NULL COMMENT 'value of the variable',
      `host` VARCHAR(36) NOT NULL COMMENT 'uniqueid of host',
      `lockedby` TINYINT(2) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'denied changes of values for users with a lower level',
      UNIQUE KEY `unique` (`variable`, `host`),
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='configuration « `%module_name%`';
     
    CREATE TABLE IF NOT EXISTS `modules_articles_ids` (
      `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'unique (sequential) identifier',
      `uniqueid` VARCHAR(36) NOT NULL COMMENT 'uniqueid',
      `i18n` CHAR(2) NOT NULL COMMENT 'unique code language by uniqueid',
      `title` TINYTEXT NOT NULL COMMENT 'title',
      `content` longtext NOT NULL COMMENT 'content',
      `tags` TINYTEXT DEFAULT NULL COMMENT 'tags',
      `visible` ENUM('no', 'yes') NOT NULL DEFAULT 'no' COMMENT 'visible group uniqueid',
      `valid_from` date NOT NULL DEFAULT '0000-00-00' COMMENT 'valid from date',
      `valid_until` date NOT NULL DEFAULT '0000-00-00' COMMENT 'valid until date',
      `host` VARCHAR(36) NOT NULL COMMENT 'uniqueid of host',
      PRIMARY KEY  (`id`),
      UNIQUE KEY `unique` (`uniqueid`, `i18n`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='ids « `%module_name%`';


    Il se trouve qu'une autre table ****_ids comporte la même structure mais sous un autre nom. Du coup je veux qu'en fonction de la 'value' (yes/no) de la table ****_ini ou la 'variable' = 'use_main_table' que je puis effectuer un FROM table second_table_ids et non pas un FROM table modules_****_ids



    Plus d'explications? je suis la. Aussi pour répondre a d'autres questions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. select * from compta where sum = variable
    Par vience dans le forum SQL
    Réponses: 6
    Dernier message: 23/05/2012, 20h19
  2. select from table where in
    Par lcaya dans le forum SQL
    Réponses: 5
    Dernier message: 10/03/2010, 17h50
  3. REQUETE SQL : SELECT * FROM annonce WHERE ..
    Par gregmarty dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/01/2008, 21h52
  4. Select from table where
    Par kabalonda dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 25/07/2007, 17h43
  5. SELECT * FROM xx WHERE yy AND zz AND tt AND
    Par french-petzouille dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/03/2007, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo