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 :

forcer un résultat de requête


Sujet :

Requêtes MySQL

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut forcer un résultat de requête
    Bonjour,

    j'ai une requête qui fonctionne très bien à laquelle je souhaiterai ajouter si possible des résultats fictifs.

    Voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT *
    FROM ma_table 
    WHERE  id_cal_jour = '154' 
    OR id_cal_jour = '155' 
    OR id_cal_jour = '156' 
    OR id_cal_jour = '157' 
    OR id_cal_jour = '158' 
    OR id_cal_jour = '159' 
    OR id_cal_jour = '160'
    J'ai besoin dans mon résultat d'un enregistrement pour chaque id_cal_jour même s'il n'existe pas.

    Peut-on forcer un résultat si la requête n'a pas abouti.

    Quelque chose du genre

    Si "id_cal_jour = '154'" n'existe pas je force un enregistrement avec "id_cal_jour = '154' "

    Merci d'avance
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Je n'ai pas très bien compris.
    Tu veux interroger ta table et la modifier si les enregistrements n'existent pas? Faire cela en une seule requête?

    Peut-être en utilisant un IF mais je n'ai jamais testé.
    Tu vérifies avec la commande NOT EXISTS puis tu fais un INSERT des nouveaux enregistrements.
    http://dev.mysql.com/doc/refman/5.0/...statement.html

    Jasmine,
    -- Jasmine --

  3. #3
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci jasmine,

    Je ne veux pas ajouter d'enregistrements dans ma table.

    Je veux ajouter des enregistrements dans mon tableau de sortie.

    Exemple dans ma table, j'ai le chiffre 1 et le chiffre 3

    Je fais une requête pour trouver les enregistrements qui contiennent 1 ou 2 ou 3.
    Il va trouver 1 et 3, mais pas 2

    A l'écran, je veux 1, 2, 3;

    Si je prends que le résultat de ma table, j'aurais 1 et 3

    Donc dans le tableau résultant de ma requête, je veux ajouter 2.

    Soit c'est possible directement dans la requête, soit je dois faire un traitement après pour voir si tous les chiffres sont présent. Si non présent, je rajoute le chiffre manquant.

    Plus clair ?
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  4. #4
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Il n'y a pas de solution directe à ma connaissance, que du paliatif moche.

    - Avoir une table avec tous les id utilisables et faire des 'left join' à partir de là.
    - Ajouter dans la table les enregistrements vides (que la clef et des NULL) via INSERT IGNORE éventuellement.
    - Tenter de bricoler un left join à partir d'une requête imbriquée du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
    pour avoir les id.

    J'ai dans l'idée qu'il est préférable d'ajouter les id manquants dans le code client.

  5. #5
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci tu as raison, je vais les rajouter à l'aide de mon script php après la lecture de la table.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    En plus simple (rien à voir avec la question posée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM ma_table 
    WHERE id_cal_jour BETWEEN '154' AND  '160'

  7. #7
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Oui merci pour la simplification, mais c'est le hazard de mon exemple qui fait que les chiffres se suivent.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Si les chiffres ne se suivent pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM ma_table 
    WHERE id_cal_jour IN ('154', '157', '158', '160')

  9. #9
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Cool,

    Merci beaucoup, jamais utilisé.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par lodan
    Cool,

    Merci beaucoup, jamais utilisé.
    Dites moi cmt vs avez fini par resoudre ce probleme.

  11. #11
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Sur le résultat de la requête, j'ai fait une une boucle sur les valeurs recherchées.

    Si dans le résultat de la requête, le résultat n'existe pas, j'ajoute un enregistrement au résultat de la requête.

    Je tri le tableau résultant pour être dans le même ordre que le tableau résultant de ma requête.

    J'èspère avoir été clair.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

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

Discussions similaires

  1. [MySQL] Affichage de 2 lignes d'un résultat de requête
    Par JohanProg dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/10/2005, 15h42
  2. Réponses: 7
    Dernier message: 26/09/2005, 17h50
  3. table comme résultat de requête
    Par nafnaf625 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/05/2005, 11h51
  4. Comparaison de résultats de requêtes
    Par Nyx de Tours dans le forum Requêtes
    Réponses: 7
    Dernier message: 31/07/2004, 15h49
  5. Trier aléatoirement un résultat de requête
    Par ang36 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/01/2004, 17h38

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