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

PHP & Base de données Discussion :

écriture requête sql pour vérification [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de XAVIERV
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut écriture requête sql pour vérification
    Bonjour,
    Voilà mon soucis c'est que je n'arrive pas à écrire ma requête SQL.
    En effet ma première requête vérifie qu'elle n'ajoute pas deux fois le même sports pour un élèves, cela marche très bien.
    Cependant je voudrai sachant que l'élèves peux faire trois sports maximums ne pas en ajouté un de plus, tous ça dans la même requête si possible.

    Voici mon code:
    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
    24
    25
    public function addSports_Eleves(TableElevesSports $sports_eleves)// Un objet TableElevesSports est attendu
    	{
     
     
    		$valeur_sports = $sports_eleves->sports_id;
    			for($i=1;$i<=$valeur_sports; $i++)
    			{
    				$sql= 'INSERT INTO eleves_sports(eleves_id,sports_id) SELECT :eleves_id, :sports_id,(SELECT count(eleves_id) FROM eleves_sports WHERE eleves_id = :eleves_id) FROM DUAL WHERE NOT EXISTS(SELECT eleves_id, sports_id FROM eleves_sports WHERE eleves_id = :eleves_id AND sports_id = :sports_id)LIMIT 1 ';
                                      $sql.='SELECT count(eleves_id) FROM eleves_sports WHERE eleves_id=:eleves_id'; //Ceci ne marche pas
    				$stmnt=$this->_db->prepare($sql);
    				$valeurEleve_id = htmlspecialchars($sports_eleves->getEleves_id());
    				$valeurSport_id = rand(1,5);
    				$stmnt->bindParam(':eleves_id', $valeurEleve_id);
    				$stmnt->bindParam(':sports_id',$valeurSport_id);
    				$count_eleves_id = $stmnt->fetchColumn();
    		 if($count_eleves_id == 3)
    			 {
    			}
    			else{
    				$stmnt->execute();
    			}
     
    			}
     
    		}
    La première requête marche très bien mais la deuxième pose problème, j'aurai aimé les écrire ensemble mais je ne sais pas comment faire.

    Merci pour le temps que vous passerez a m'aider.

  2. #2
    Membre averti Avatar de XAVIERV
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut modification
    Du coup j'ai réécris la requête car j'ai mis en unique eleves_id et sports_id les deux couplé mais reste à écrire avec un count pour vérification pas plus de 3 sports dans ma requête c'est la que je bloque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sql= 'INSERT INTO eleves_sports (eleves_id, sports_id) 
     VALUES (:eleves_id, :sports_id)';

  3. #3
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Bonjour
    En passant, syntaxe à tester ? ou en attendant une meilleure réponse
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO eleves_sports (eleves_id, sports_id) 
     VALUES (:eleves_id, :sports_id)
    where not exists (
    select eleves_id  from eleves_sports 
    where eleves_id = :eleves_id 
    group by eleves_id  
    having count(*) > 2 )

    ou ce style selon sgbd utilisé
    =>

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    INSERT INTO eleves_sports (eleves_id, sports_id)
    SELECT * FROM(
    SELECT 
    :eleves_id, 
    :sports_id) AS tmp
    WHERE NOT EXISTS (
    select eleves_id  from eleves_sports 
    where eleves_id = :eleves_id 
    group by eleves_id  
    having count(*) > 2) 
    LIMIT 1;

  4. #4
    Membre averti Avatar de XAVIERV
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    La deuxième requête marche très bien, ce qui me manquait c'est se HAVING je ne l'aurai pas trouvé sans ton aide, encore merci pour le temps que tu as pris à m'aider c'est vraiment super, je bloqué depuis pas mal de temps dessus pour l'écrire.Bonne journée

  5. #5
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Ok impec
    Merci pour le retour

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

Discussions similaires

  1. Requête SQL pour insérer une donnée BINAIRE ?
    Par Najdar dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/05/2006, 10h21
  2. Requêtes SQL pour les Dates et numériques
    Par Ramage03 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2006, 17h26
  3. Requête SQL pour afficher un tri
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2005, 15h27
  4. problème de requète SQL pour formulaire
    Par en_stage dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 21/06/2005, 12h21
  5. Requêtes SQL pour access
    Par cciocc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/04/2005, 08h45

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