Boucle et résultats comparés de 2 tables
Résolu
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Voilà, je rencontre une difficulté dans le résultat de cette requête.
Il double l'affichage et je n'arrives pas à corriger.
Voilà ce que j'essaie de faire et espère un coup de main.
Voici mes tables :
Alors, au lieu d'avoir:
J'ai plutôt :
J'ai essayé ceci :
Mais je n'ai que comme résultat :
Je brûle là !
Voici mon code :
J'espère avoir été assez explicite... merci de votre aide !
Voilà, je rencontre une difficulté dans le résultat de cette requête.
Il double l'affichage et je n'arrives pas à corriger.
Voilà ce que j'essaie de faire et espère un coup de main.
tb_user_notifications(NumId, Date, Sujet)
tb_user_notifications_recap(NIC_Handle, Notification)
tb_user_notifications_recap.Notification = tb_user_notifications.NumId
Voici mes tables :
tb_user_notifications NumId Date Sujet Message 1 08/03/2017 19:07 Sujet 1 Texte de notification 1 2 15/03/2018 10:34 Sujet 2 Texte de notification 2 3 17/03/2018 16:59 Sujet 3 Texte de notification 3 4 22/09/2018 06:21 Sujet 4 Texte de notification 4 5 22/09/2018 08:33 sujet 5 Texte de notification 5 6 22/09/2018 17:29 Sujet 6 Texte de notification 6 tb_user_notifications_recap NumId NIC_Handle Notification 1 JA90717 1 2 JA90717 2 3 JS38579 1
Alors, au lieu d'avoir:
22-09-2018 - Sujet 6 - Non lu
22-09-2018 - sujet 5 - Non lu
22-09-2018 - Sujet 4 - Non lu
17-03-2018 - Sujet 3 - Non lu
15-03-2018 - Sujet 2 - Lu
08-03-2017 - Sujet 1 - Lu
J'ai plutôt :
22-09-2018 - Sujet 6 - Non lu
22-09-2018 - Sujet 6 - Non lu
22-09-2018 - sujet 5 - Non lu
22-09-2018 - sujet 5 - Non lu
22-09-2018 - Sujet 4 - Non lu
22-09-2018 - Sujet 4 - Non lu
17-03-2018 - Sujet 3 - Non lu
17-03-2018 - Sujet 3 - Non lu
15-03-2018 - Sujet 2 - Non lu
15-03-2018 - Sujet 2 - Lu
08-03-2017 - Sujet 1 - Lu
08-03-2017 - Sujet 1 - Non lu
J'ai essayé ceci :
SELECT * FROM tb_user_notifications WHERE NumId IN (SELECT Notification FROM tb_user_notifications_recap WHERE NIC_Handle='".$_SESSION_NICHANDLE."' )
Mais je n'ai que comme résultat :
15-03-2018 - Sujet 2 - Lu
08-03-2017 - Sujet 1 - Lu
Je brûle là !
Voici mon code :
<?php try{$MyPDO=$pdo->query("SELECT * FROM tb_user_notifications ORDER BY Date DESC "); while($data=$MyPDO->fetch(PDO::FETCH_ASSOC)){ ?> <?php try{$MyPDO_00 = $pdo->query("SELECT * FROM tb_user_notifications_recap WHERE NIC_Handle='".$_SESSION_NICHANDLE."'"); while($data_00 = $MyPDO_00->fetch(PDO::FETCH_ASSOC)) { ?> <?php if($data_00["Notification"] == $data["NumId"]) {$ICO = "fa fa-check";} else {$ICO = "fa fa-eye";} ?> <tr> <td><div style="padding:5px"><?php echo date("$DATE_SQL", strtotime($data["Date"])); ?></div></td> <td><div style="padding:5px"><?php echo $data["Sujet"]; ?></div></td> <td align="center"><button class="btn"><i class="<?php echo $ICO; ?>"></i></button></td> </tr> <?php }}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";} ?> <?php }}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";} ?>
J'espère avoir été assez explicite... merci de votre aide !
A voir également:
- Boucle et résultats comparés de 2 tables
- Supercopier 2 - Télécharger - Gestion de fichiers
- Resultats foot - Télécharger - Vie quotidienne
- Tables des matières word - Guide
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
3 réponses
Bonjour
Essaye de faire une requête avec Distinct
Voilà des exemple sur ce lien
https://www.w3schools.com/sql/sql_distinct.asp
Essaye de faire une requête avec Distinct
Voilà des exemple sur ce lien
https://www.w3schools.com/sql/sql_distinct.asp
Bonjour,
Avec JOINT LEFT j'ai toujours :
au lieu d'avoir :
SELECT *
FROM tb_user_notifications
LEFT JOIN tb_user_notifications_recap ON
tb_user_notifications.NumId = tb_user_notifications_recap.Notification
WHERE tb_user_notifications_recap.NIC_Handle='".$_SESSION_NICHANDLE."'
Avec JOINT LEFT j'ai toujours :
15-03-2018 - Sujet 2 - Lu
08-03-2017 - Sujet 1 - Lu
au lieu d'avoir :
22-09-2018 - Sujet 6 - Non lu
22-09-2018 - sujet 5 - Non lu
22-09-2018 - Sujet 4 - Non lu
17-03-2018 - Sujet 3 - Non lu
15-03-2018 - Sujet 2 - Lu
08-03-2017 - Sujet 1 - Lu
Sachant que j'ai utillisé la structure de bdd suivante
NB: Lorsque tu nommes tes tables ou les champs qui s'y trouvent.. je te conseille de n'utiliser que des minuscules....
Et pour les champs "id" ..'id' suffit... pas besoin de complexifier en mettant des trucs du genre NumId
-- Export de la structure de table test3. tb_user_notifications CREATE TABLE IF NOT EXISTS `tb_user_notifications` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `sujet` varchar(50) DEFAULT NULL, `message` text, PRIMARY KEY (`id`), KEY `date` (`date`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; -- Export de données de la table test3.tb_user_notifications: ~0 rows (environ) DELETE FROM `tb_user_notifications`; INSERT INTO `tb_user_notifications` (`id`, `date`, `sujet`, `message`) VALUES (1, '2018-03-08 19:07:00', 'test1', 'dsfsdf'), (2, '2018-03-15 19:07:00', 'test2', 'dsfsdf'), (3, '2018-03-17 16:59:00', 'test3', 'dsfsdf'), (4, '2018-09-23 13:00:20', 'test4', 'dsfsdf'), (5, '2018-09-23 14:27:20', 'test5', 'dsfsdf'), (6, '2018-09-23 15:27:20', 'test6', 'dsfsdf'); -- Export de la structure de table test3. tb_user_notifications_recap CREATE TABLE IF NOT EXISTS `tb_user_notifications_recap` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user` varchar(50) DEFAULT NULL, `notification` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `user` (`user`), KEY `notification` (`notification`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; -- Export de données de la table test3.tb_user_notifications_recap: ~0 rows (environ) DELETE FROM `tb_user_notifications_recap`; INSERT INTO `tb_user_notifications_recap` (`id`, `user`, `notification`) VALUES (1, 'JA90717', 1), (2, 'JA90717', 2), (3, 'JS38579', 1);
NB: Lorsque tu nommes tes tables ou les champs qui s'y trouvent.. je te conseille de n'utiliser que des minuscules....
Et pour les champs "id" ..'id' suffit... pas besoin de complexifier en mettant des trucs du genre NumId