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 01/12/2010, 17h26   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 30
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2008
Messages : 30
Points : 14
Points : 14
Par défaut Deux requêtes en une

Bonjour tout le monde

J'ai actuellement un problème pour une requête qui génère la vue des forums de mon site.

Je cherche à générer un affichage qui m'évite d'avoir deux boucles php.

Cette requête doit afficher les post it et ensuite les messages normaux, quelque soit le numéro de page appelé.

Voici une des requêtes que j'ai tenté de faire, en vain...
Code sql :
1
2
3
4
5
6
 
SELECT * FROM forum_topic WHERE f_topic_priority = '1'
(
     SELECT * FROM forum_topic WHERE f_topic_priority = '0' ORDER BY f_topic_update_time LIMIT $PremierSujet,$DernierSujet
)
ORDER BY f_topic_update_time

Voici les champs :
f_topic_priority = enum(0,1), 1 = post it, 0 = normal
f_topic_update_time = time(), date du dernier message posté dans le sujet

Merci d'avance pour votre aide, Bloody-wave
Bloody-wave est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 17h50   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
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 : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
Et comme ça, c'est pas plus simple ?
Code :
1
2
3
SELECT les_colonnes_necessaires_et_pas_etoile
FROM forum_topic
ORDER BY f_topic_priority DESC, f_topic_update_time DESC
À propos du SELECT * que j'ai remplacé, évite la guerre des étoiles !
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 17h56   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 30
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2008
Messages : 30
Points : 14
Points : 14
Bonjour,

malheureusement ça ne correspond pas a ce dont j'ai besoin.

J'ai un système de pagination qui définit le LIMIT de la requête. Je voudrait que les sujet qui ont f_topic_priority = 1 soient affichés sur toutes les pages et ensuite les 20 messages normaux correspondant au numéro de la page
Bloody-wave est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 18h01   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
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 : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
Alors il faut une UNION entre les deux requêtes.
Essaie comme ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT tmp.* -- là on peut parce que les colonnes sont déjà définies dans la sous-requête !
FROM 
(
    SELECT les_colonnes_necessaires_et_pas_etoile
    FROM forum_topic
    WHERE f_topic_priority = '1'
 
    UNION
 
    SELECT les_colonnes_necessaires_et_pas_etoile
    FROM forum_topic
    WHERE f_topic_priority = '0'
    LIMIT $PremierSujet, $DernierSujet
) tmp
ORDER BY f_topic_priority DESC, f_topic_update_time DESC
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 18h07   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 30
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2008
Messages : 30
Points : 14
Points : 14
Merci pour ton aide, malheureusement ça ne fonctionne toujours pas comme il faut.

Les sujets ayant f_topic_priority =1 sont pris en compte dans le LIMIT

Je commence a me dire que je vais devoir faire deux boucles pour obtenir l'affichage souhaité
Bloody-wave est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h44.


 
 
 
 
Partenaires

Hébergement Web