|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : février 2008 Messages : 44 ![]() |
Bonjour,
Voila 4 heures que je me prends la tête sur cette requête où je bloque ... Pouvez vous m'aider ? Voila mon début de ma requête SQL : Code :
![]() Au final, je souhaite la même requête mais en regroupant la ligne 2 et 3. Je souhaite pouvoir faire un group BY avec la ligne précédente. Pour que si fk_user1_id et fk_user2_id sont identique même inversé, la valeur qui sera retourné sera la valeur où le fk_time_id est le maximum. Pas facile comme requête mais merci de vos aides. Merci. En attente de votre retour.
|
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Administrateur de base de données Inscription : août 2009 Messages : 404 ![]() |
Est-ce que vous pourriez nous fournir la structure de la table au format SQL (CREATE TABLE..) ainsi qu'un jeu d'essai (quelques INSERT INTO..), ça nous aidera à vous aider
|
|
|
00
|
|
|
#3 | ||||||||
![]() ![]() |
1) Quel est le fk_time_id maxi pour chaque fk_user2_id où fk_user1_id = 1
Code :
Code :
Code :
Code :
__________________
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 ! |
||||||||
|
00
|
|
|
#4 | ||||
|
Invité de passage
![]() Inscription : février 2008 Messages : 44 ![]() |
Merci de t'interesser à mon problème
Voila la structure de la table avec quelques <insert>. Code :
Code :
|
||||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2008 Messages : 44 ![]() |
grand merci.
Toutefois, je vais peux être chercher autre chose pour optimiser la requete. Peux-etre découper la table en 2 tables ? Qu'en dites vous ? |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Administrateur de base de données Inscription : août 2009 Messages : 404 ![]() |
La réponse de CinePhil vous suffit ? Car il est a priori beaucoup plus complexe d'obtenir le résultat que vous demandez dans le premier message, avec les 5 colonnes dans le résultat.
Il y a peut-être un soucis au niveau de la conception de cette table (et de ses voisines ?) effectivement, notamment autour des deux colonnes fk_userX_id qui me chagrinent. A quoi sert cette table (et ses colonnes) ? A quelle "question" essayez-vous de répondre avec cette requête ? |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : février 2008 Messages : 44 ![]() |
Bonsoir,
Merci de vos réponses. Mais je comprends maintenant, que le problème est un problème de conception de tables. Oui ... je me suis un peu trop pressé sur cette table ci. Il s'agit d'une messagerie. Avec user1 -> celui qui envoie le message user2 -> celui qui le recoit. Avec cette requete, je voulais connaitre le dernier message recoi ou envoyé pour chaque correspondant. |
|
|
00
|
|
|
#8 | ||
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Dans ce cas, le plus simple est d'avoir une sous-requête qui mette d'abord dans la même colonne user1 et user2, sur le modèle de:
Code :
|
||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : février 2008 Messages : 44 ![]() |
Merci pour vos réponses.
Toutefois, je préfère revoir mon SGBD. Les solutions que vous me proposez semblent alourdir le temps d’exécution des requêtes quand j'aurai un nombre conséquent d'utilisateurs. Merci pour vos actions.
|
|
|
00
|
|
|
#10 | |||||
![]() ![]() |
A priori, ta table est plutôt bien modélisée, à part l'identifiant user_message_id inutile puisqu'il s'agit d'une table associative.
Citation:
1) Quel est le dernier fk_time_id de chaque correspondant (fk_user1 ou fk_user2) ? Code :
Code :
__________________
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 ! |
|||||
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : février 2008 Messages : 44 ![]() |
Merci j'ai testé et cela fonctionne plutôt bien à voir avec plus de données combien de temps la requête met à s'exécuter.
Je ne suis pas fan du "UNION ALL" il me semble que son utilisation alourdi fortement la requête ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com