Requête sql basique mais au final pas si simple
Résolu/Fermé
SM05
Messages postés
10
Date d'inscription
jeudi 4 juin 2020
Statut
Membre
Dernière intervention
12 juillet 2020
-
4 juin 2020 à 20:50
SM05 - 20 juin 2020 à 21:21
SM05 - 20 juin 2020 à 21:21
A voir également:
- Requête sql basique mais au final pas si simple
- Iphone 14 simple - Guide
- Simple ocr - Télécharger - Bureautique
- Simple file locker - Télécharger - Sécurité
- Fondu au noir final cut pro ✓ - Forum MacOS
- Organigramme simple - Guide
11 réponses
SM05
Messages postés
10
Date d'inscription
jeudi 4 juin 2020
Statut
Membre
Dernière intervention
12 juillet 2020
1
5 juin 2020 à 21:17
5 juin 2020 à 21:17
<section id="corps"> <!-- Le corps --> <?php $query = " SELECT b.version, c.version, a.logiciel from logiciel a join version b on b.id = a.V_mini join version c on c.id = a.V_maxi "; try { $pdo_select = $pdo->prepare($query); // Prépare une requête à l'exécution $pdo_select->execute(); // Exécute une requête préparée $NbreData = $pdo_select->rowCount(); // nombre d'enregistrements (lignes) $rowAll = $pdo_select->fetchAll(); // fetchAll : Retourne un tableau contenant toutes les lignes du jeu d'enregistrements } catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); } // affichage if ($NbreData != 0) { ?> <table> <thead> <tr> <th>Version_mini</th> <th>Version_maxi</th> <th>Logiciel</th> </tr> </thead> <tbody> <?php // pour chaque ligne (chaque enregistrement) foreach ( $rowAll as $row ) { // DONNEES A AFFICHER dans chaque cellule de la ligne ?> <tr> <td><?php echo $row['version b']; ?></td> <td><?php echo $row['version c']; ?></td> <td><?php echo $row['Logiciel']; ?></td> </tr> <?php } // fin foreach ?> </tbody> </table> <?php } else { ?> pas de données à afficher <?php } ?> </section >
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
6 juin 2020 à 08:30
6 juin 2020 à 08:30
<?php // Au debut de ton fichier .... ( AVANT LE <html> ) // après la connexion à ta bdd... $query = " SELECT B.version as Version_mini , C.version as Version_maxi , A.logiciel FROM logiciel A LEFT JOIN version B on B.id = A.V_mini LEFT JOIN version C on C.id = A.V_maxi "; try { $pdo_select = $pdo->prepare($query); // Prépare une requête à l'exécution $pdo_select->execute(); // Exécute une requête préparée //$NbreData = $pdo_select->rowCount(); // nombre d'enregistrements (lignes) // JAMAIS SUR UNE REQUETE DE TYPE SELECT !! $rowAll = $pdo_select->fetchAll(); // fetchAll : Retourne un tableau contenant toutes les lignes du jeu d'enregistrements $NbreData = count($rowAll); } catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); } ?>
puis, dans ta zone section
<section id="corps"> <!-- Le corps --> <?php // affichage if (!empty($rowAll )){ ?> <table> <thead> <tr> <th>Version_mini</th> <th>Version_maxi</th> <th>Logiciel</th> </tr> </thead> <tbody> <?php // pour chaque ligne (chaque enregistrement) foreach ( $rowAll as $row ) { // DONNEES A AFFICHER dans chaque cellule de la ligne ?> <tr> <td><?php echo $row['Version_mini']; ?></td> <td><?php echo $row['Version_maxi']; ?></td> <td><?php echo $row['Logiciel']; ?></td> </tr> <?php } // fin foreach ?> </tbody> </table> <?php } else { echo "pas de données à afficher"; } ?> </section >
jee pee
Messages postés
40599
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
28 décembre 2024
9 465
Modifié le 5 juin 2020 à 19:03
Modifié le 5 juin 2020 à 19:03
Bonjour,
Pour faire simple, on pourrait ne pas utiliser la table version, qui ne sert à rien, et juste rajouter des points entre chiffres de v_mini et v_maxi de la table logiciel ;-)
ou pour faire compliqué quelque chose comme :
Pour faire simple, on pourrait ne pas utiliser la table version, qui ne sert à rien, et juste rajouter des points entre chiffres de v_mini et v_maxi de la table logiciel ;-)
ou pour faire compliqué quelque chose comme :
select b.version, c.version, a.logiciel from logiciel a join version b on b.id = a.V_mini join version c on c.id = a.V_maxi
SM05
Messages postés
10
Date d'inscription
jeudi 4 juin 2020
Statut
Membre
Dernière intervention
12 juillet 2020
1
5 juin 2020 à 18:32
5 juin 2020 à 18:32
Bonjour et merci pour ta réponse.
Plus exactement je veux faire une table version car je veux pouvoir faire des tri dessus ( pas possible avec des versions de la forme 1.2.4 ou 1.20.12 , si j'utilise 010204 pour 1.2.4 et 012012 pour 1.20.12 c'est tout de suite plus facile .... )
Si je comprends bien, avec ta solution " pour faire compliqué " tu utilise 2 tables de version ( chose que j'avais envisagé mais que je souhaite faire que en dernier denier recours ) .
Merci
Plus exactement je veux faire une table version car je veux pouvoir faire des tri dessus ( pas possible avec des versions de la forme 1.2.4 ou 1.20.12 , si j'utilise 010204 pour 1.2.4 et 012012 pour 1.20.12 c'est tout de suite plus facile .... )
Si je comprends bien, avec ta solution " pour faire compliqué " tu utilise 2 tables de version ( chose que j'avais envisagé mais que je souhaite faire que en dernier denier recours ) .
Merci
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
5 juin 2020 à 18:42
5 juin 2020 à 18:42
Bonjour,
Il n'utilise pas deux tables version .... il n'utilise que La table version... mais qu'il "join" sur la colonne mini et sur la colonne maxi.
Il n'utilise pas deux tables version .... il n'utilise que La table version... mais qu'il "join" sur la colonne mini et sur la colonne maxi.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
SM05
Messages postés
10
Date d'inscription
jeudi 4 juin 2020
Statut
Membre
Dernière intervention
12 juillet 2020
1
5 juin 2020 à 18:44
5 juin 2020 à 18:44
Oups,alors c'est moi qui ne comprend pas le :
select b.version, c.version, a.logiciel
select b.version, c.version, a.logiciel
yg_be
Messages postés
23409
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
Modifié le 5 juin 2020 à 18:50
Modifié le 5 juin 2020 à 18:50
en effet, tu ne comprends pas. qu'utilises-tu pour apprendre le langage SQL?
as-tu essayé la solution proposée?
as-tu essayé la solution proposée?
SM05
Messages postés
10
Date d'inscription
jeudi 4 juin 2020
Statut
Membre
Dernière intervention
12 juillet 2020
1
5 juin 2020 à 19:27
5 juin 2020 à 19:27
jee pee
Messages postés
40599
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
28 décembre 2024
9 465
5 juin 2020 à 19:29
5 juin 2020 à 19:29
pour info j'avais corrigé le sql, tu as la première version, fausse, qui n'utilise pas l'id
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
5 juin 2020 à 21:06
5 juin 2020 à 21:06
Bonsoir,
Avec une Image... on ne peut rien faire ( pas de copier/coller pour t'aider à corriger ton code)
Donc...
Merci de poster ton code correctement en utilisant les BALISES DE CODE.
Explications ( à lire ENTIEREMENT ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Avec une Image... on ne peut rien faire ( pas de copier/coller pour t'aider à corriger ton code)
Donc...
Merci de poster ton code correctement en utilisant les BALISES DE CODE.
Explications ( à lire ENTIEREMENT ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
SM05
Messages postés
10
Date d'inscription
jeudi 4 juin 2020
Statut
Membre
Dernière intervention
12 juillet 2020
1
6 juin 2020 à 09:53
6 juin 2020 à 09:53
OK super
J'ai juste rajouté un " as Logiciel " dans le select
Et voici le résultat :
J'ai fait un INNER JOIN pour ne pas afficher les cases vides et voici le résultat :
Bravo et merci pour votre aide !
ps : Savez vous où je peux trouver un "petit cours" sur ce type de Select ?
J'ai juste rajouté un " as Logiciel " dans le select
$query = " SELECT B.version as Version_mini , C.version as Version_maxi , A.logiciel as Logiciel FROM logiciel A LEFT JOIN version B on B.id = A.V_mini LEFT JOIN version C on C.id = A.V_maxi ";
Et voici le résultat :
J'ai fait un INNER JOIN pour ne pas afficher les cases vides et voici le résultat :
Bravo et merci pour votre aide !
ps : Savez vous où je peux trouver un "petit cours" sur ce type de Select ?
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
6 juin 2020 à 10:05
6 juin 2020 à 10:05
Il faut que tu cherches les jointures SQL
SM05
Messages postés
10
Date d'inscription
jeudi 4 juin 2020
Statut
Membre
Dernière intervention
12 juillet 2020
1
6 juin 2020 à 10:08
6 juin 2020 à 10:08
Ok merci pour tout
Pour aller un petit peu plus loin je voudrais faire un CONCAT, mais je tourne en rond et je ne trouve pas la solution.Par exemple :
$query = " SELECT CONCAT( B.version as Version_mini
, C.version as Version_maxi ) as ma_concatenation
, A.logiciel as Logiciel
FROM logiciel A
LEFT JOIN version B on B.id = A.V_mini
LEFT JOIN version C on C.id = A.V_maxi ";
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
20 juin 2020 à 11:04
20 juin 2020 à 11:04
SELECT CONCAT( B.version , C.version ) as ma_concatenation
PS: A l'avenir, pour une nouvelle question... créé une nouvelle discussion. Tu as de la chance que j'ai vu que tu avais posté un nouveau message dans celle la.