Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/08/2011, 02h40   #1
Invité régulier
 
Avatar de antoinelavigne
 
Inscription : mars 2005
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 82
Points : 9
Points : 9
Par défaut Plusieurs conditons compliquées

Bonjour,

j'ai un forum avec pas mal de membres maintenant et j'avais il y a longtemps inséré un système de messages privés. Voilà la table :

Citation:
Table "privatemessages" :

ID, du type int
Title, du type texte
Date, du type date
id_sender, l'ID du membre qui a envoyé le message
id_receiver, l'ID du membre qui a reçu le message
seen, booléen pour savoir si le message a été lu ou pas
Ce que j'aimerais, c'est qu'en cliquant sur un de ses messages privés, le membre puisse voir les 10 derniers échanges de MP avec la personne en question, un peu sous forme d'un chat (en gros ce seront des <li>)

Le problème, c'est que bien qu'étant familier de Mysql, je suis incapable de créer cette requête ! Voilà ce qu'il faudrait :

Code :
1
2
3
4
5
6
7
"SELECT * 
FROM privatemessages
WHERE id_sender="sarkozy" 
  AND id_receiver = "Obama" 
/* MAIS AUSSI */
WHERE id_sender="Obama" 
  AND id_receiver = "Sarkozy"
ça me permettrait de sélectionner tous les messages privés échangés entre ces 2 membres. Le problème vient donc, comme vous l'aurez vu, du "MAIS AUSSI" ....

Un petit coup de pouce ne serait pas de refus
antoinelavigne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2011, 09h21   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
"MAIS AUSSI" = OR !
Code :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT -- les colonnes nécessaires et pas étoile !
FROM privatemessages
WHERE 
(
    id_sender = 'Sarkozy' 
    AND id_receiver = 'Obama' 
)
OR
(
    id_sender = 'Obama' 
    AND id_receiver = 'Sarkozy'
)
Quelques remarques :
1) Évite la guerre des étoiles !

2) J'ose espérer que les id_sender et id_receiver (identifiants) ne sont pas de type VARCHAR comme le suggère ta requête mais de type entier !

3) Les valeurs textuelles s'écrivent entre apostrophe et pas entre guillemets.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/08/2011, 16h01   #3
Invité régulier
 
Avatar de antoinelavigne
 
Inscription : mars 2005
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 82
Points : 9
Points : 9
Bonjour à toi,

tout d'abord merci car ta solution marche bien. En fait, je ne savais pas que l'on pouvait grouper des conditions entre parenthèses !

Pour tes questions :

1/ Merci, je vais y jeter un coup d'oeil ce soir
2/ Ce sont bien des entiers, j'ai mis Obama et Sarkozy comme exemple plus simple
3/ Lire ci-dessus

Encore merci
antoinelavigne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h00.


 
 
 
 
Partenaires

Hébergement Web