par
Brian » 19 mars 2008, 01:15
Bonjour,
Je souhaite faire une union de deux résultats, seulement les deux sous-requêtes contiennent des OREDER BY ce qui n'est pas possible ! Comment faire ? Une idée lumineuse ?
Code : Tout sélectionner
SELECT s2.sujet_id, s2.sujet_nom
FROM fsb_messages m2
JOIN fsb_sujets s2
USING ( sujet_id )
WHERE s2.sujet_nom LIKE '%prog%'
AND s2.sujet_nom LIKE '%[Réglé]%'
GROUP BY s2.sujet_id
ORDER BY COUNT( s2.sujet_id ) DESC
UNION SELECT s2.sujet_id, s2.sujet_nom
FROM fsb_messages m2
JOIN fsb_sujets s2
USING ( sujet_id )
WHERE s2.sujet_nom LIKE '%prog%'
GROUP BY s2.sujet_id
ORDER BY COUNT( s2.sujet_id ) DESC
--
-- Structure de la table 'fsb_messages'
--
CREATE TABLE fsb_messages (
message_id int(11) NOT NULL auto_increment,
forum_id mediumint(9) NOT NULL default '0',
sujet_id int(11) NOT NULL default '0',
membre_id int(11) NOT NULL default '0',
pseudo_posteur varchar(30) collate latin1_general_ci NOT NULL default '',
message_texte text collate latin1_general_ci NOT NULL,
message_temps int(20) NOT NULL default '0',
message_ip varchar(20) collate latin1_general_ci NOT NULL default '',
PRIMARY KEY (message_id),
KEY message_id (message_id),
KEY sujet_id (sujet_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
-- --------------------------------------------------------
--
-- Structure de la table 'fsb_sujets'
--
CREATE TABLE fsb_sujets (
sujet_id int(11) NOT NULL auto_increment,
forum_id int(11) NOT NULL default '0',
membre_id int(11) NOT NULL default '0',
sujet_nom varchar(250) collate latin1_general_ci NOT NULL default '',
nb_vu int(11) NOT NULL default '0',
nb_reponse int(11) NOT NULL default '0',
dernier_message_id int(11) NOT NULL default '0',
dernier_message_temps int(11) NOT NULL default '0',
premier_message_id int(11) NOT NULL default '0',
sujet_type smallint(6) NOT NULL default '0',
sujet_status tinyint(4) NOT NULL default '1',
PRIMARY KEY (sujet_id),
UNIQUE KEY sujet_id (sujet_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
PS: Dans notre cas, je veux que les sujets réglés soient en premiers retournés, le nombre de fois que le mot a été trouvé dans le sujet est secondaire...
SGBD: MySQL
Bonjour,
Je souhaite faire une union de deux résultats, seulement les deux sous-requêtes contiennent des OREDER BY ce qui n'est pas possible ! Comment faire ? Une idée lumineuse ?
[code]SELECT s2.sujet_id, s2.sujet_nom
FROM fsb_messages m2
JOIN fsb_sujets s2
USING ( sujet_id )
WHERE s2.sujet_nom LIKE '%prog%'
AND s2.sujet_nom LIKE '%[Réglé]%'
GROUP BY s2.sujet_id
ORDER BY COUNT( s2.sujet_id ) DESC
UNION SELECT s2.sujet_id, s2.sujet_nom
FROM fsb_messages m2
JOIN fsb_sujets s2
USING ( sujet_id )
WHERE s2.sujet_nom LIKE '%prog%'
GROUP BY s2.sujet_id
ORDER BY COUNT( s2.sujet_id ) DESC
--
-- Structure de la table 'fsb_messages'
--
CREATE TABLE fsb_messages (
message_id int(11) NOT NULL auto_increment,
forum_id mediumint(9) NOT NULL default '0',
sujet_id int(11) NOT NULL default '0',
membre_id int(11) NOT NULL default '0',
pseudo_posteur varchar(30) collate latin1_general_ci NOT NULL default '',
message_texte text collate latin1_general_ci NOT NULL,
message_temps int(20) NOT NULL default '0',
message_ip varchar(20) collate latin1_general_ci NOT NULL default '',
PRIMARY KEY (message_id),
KEY message_id (message_id),
KEY sujet_id (sujet_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
-- --------------------------------------------------------
--
-- Structure de la table 'fsb_sujets'
--
CREATE TABLE fsb_sujets (
sujet_id int(11) NOT NULL auto_increment,
forum_id int(11) NOT NULL default '0',
membre_id int(11) NOT NULL default '0',
sujet_nom varchar(250) collate latin1_general_ci NOT NULL default '',
nb_vu int(11) NOT NULL default '0',
nb_reponse int(11) NOT NULL default '0',
dernier_message_id int(11) NOT NULL default '0',
dernier_message_temps int(11) NOT NULL default '0',
premier_message_id int(11) NOT NULL default '0',
sujet_type smallint(6) NOT NULL default '0',
sujet_status tinyint(4) NOT NULL default '1',
PRIMARY KEY (sujet_id),
UNIQUE KEY sujet_id (sujet_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
[/code]
PS: Dans notre cas, je veux que les sujets réglés soient en premiers retournés, le nombre de fois que le mot a été trouvé dans le sujet est secondaire...
SGBD: MySQL