AIDE MySQL : unique liste selon 2 requetes (jointure)
8 réponses
Stéphane Santon
Bonjour,
Utilisant habituellement un CMS avec une syntaxe hors SQL, j'utilise
maintenant une procedure stockée qui entraine l'écriture de requêtes à
la mano.
J'ai une procedure stockée de calcul sur des champs qui peuvent être
NULL. Si je la lance, je reçois d'abord les enregistrements avec calcul
NULL, puis les enregistrements avec résultats de calcul triés par ordre
croissant.
exemple :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
J'aimerais avoir d'abord les enregistrements triés, puis les NULL.
Est-ce possible ?
Si non, peut-on le faire par une (auto-?) jointure ou autre ?
Merci
--
Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org
Agitateurs d'idées... accélérateurs de talents !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
TopJB
Bonjour,
Essaye un truc du genre :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE cout IS NOT NULL ORDERBY Cout JOIN SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE Cout IS NULL
A voir pas sûr du résultat. Mais j'essayerais un truc dans le genre. La première te sort ceux qui sont pas NULL et tu les classent par ordre croissant de valeur. Puis la second te prend les NULL à la suite normalement.
Cordialement
TopJB
Le 17/06/2011 08:08, Stéphane Santon a écrit :
Bonjour,
Utilisant habituellement un CMS avec une syntaxe hors SQL, j'utilise maintenant une procedure stockée qui entraine l'écriture de requêtes à la mano.
J'ai une procedure stockée de calcul sur des champs qui peuvent être NULL. Si je la lance, je reçois d'abord les enregistrements avec calcul NULL, puis les enregistrements avec résultats de calcul triés par ordre croissant.
exemple : SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
J'aimerais avoir d'abord les enregistrements triés, puis les NULL. Est-ce possible ?
Si non, peut-on le faire par une (auto-?) jointure ou autre ?
Merci
Bonjour,
Essaye un truc du genre :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE
cout IS NOT NULL ORDERBY Cout
JOIN
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE
Cout IS NULL
A voir pas sûr du résultat. Mais j'essayerais un truc dans le genre.
La première te sort ceux qui sont pas NULL et tu les classent par ordre
croissant de valeur. Puis la second te prend les NULL à la suite
normalement.
Cordialement
TopJB
Le 17/06/2011 08:08, Stéphane Santon a écrit :
Bonjour,
Utilisant habituellement un CMS avec une syntaxe hors SQL, j'utilise
maintenant une procedure stockée qui entraine l'écriture de requêtes à
la mano.
J'ai une procedure stockée de calcul sur des champs qui peuvent être
NULL. Si je la lance, je reçois d'abord les enregistrements avec calcul
NULL, puis les enregistrements avec résultats de calcul triés par ordre
croissant.
exemple :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
J'aimerais avoir d'abord les enregistrements triés, puis les NULL.
Est-ce possible ?
Si non, peut-on le faire par une (auto-?) jointure ou autre ?
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE cout IS NOT NULL ORDERBY Cout JOIN SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE Cout IS NULL
A voir pas sûr du résultat. Mais j'essayerais un truc dans le genre. La première te sort ceux qui sont pas NULL et tu les classent par ordre croissant de valeur. Puis la second te prend les NULL à la suite normalement.
Cordialement
TopJB
Le 17/06/2011 08:08, Stéphane Santon a écrit :
Bonjour,
Utilisant habituellement un CMS avec une syntaxe hors SQL, j'utilise maintenant une procedure stockée qui entraine l'écriture de requêtes à la mano.
J'ai une procedure stockée de calcul sur des champs qui peuvent être NULL. Si je la lance, je reçois d'abord les enregistrements avec calcul NULL, puis les enregistrements avec résultats de calcul triés par ordre croissant.
exemple : SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
J'aimerais avoir d'abord les enregistrements triés, puis les NULL. Est-ce possible ?
Si non, peut-on le faire par une (auto-?) jointure ou autre ?
Merci
Stéphane Santon
Bonjour,
Marche pas, MySQL n'aime pas le JOIN ici...
TopJB a écrit :
Essaye un truc du genre :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE cout IS NOT NULL ORDERBY Cout JOIN SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE Cout IS NULL
A voir pas sûr du résultat. Mais j'essayerais un truc dans le genre. La première te sort ceux qui sont pas NULL et tu les classent par ordre croissant de valeur. Puis la second te prend les NULL à la suite normalement.
Cordialement
TopJB
Le 17/06/2011 08:08, Stéphane Santon a écrit :
J'ai une procedure stockée de calcul sur des champs qui peuvent être NULL. Si je la lance, je reçois d'abord les enregistrements avec calcul NULL, puis les enregistrements avec résultats de calcul triés par ordre croissant.
exemple : SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
J'aimerais avoir d'abord les enregistrements triés, puis les NULL. Est-ce possible ?
Si non, peut-on le faire par une (auto-?) jointure ou autre ?
-- Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org Agitateurs d'idées... accélérateurs de talents !
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE cout
IS NOT NULL ORDERBY Cout
JOIN
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE Cout
IS NULL
A voir pas sûr du résultat. Mais j'essayerais un truc dans le genre.
La première te sort ceux qui sont pas NULL et tu les classent par ordre
croissant de valeur. Puis la second te prend les NULL à la suite normalement.
Cordialement
TopJB
Le 17/06/2011 08:08, Stéphane Santon a écrit :
J'ai une procedure stockée de calcul sur des champs qui peuvent être
NULL. Si je la lance, je reçois d'abord les enregistrements avec calcul
NULL, puis les enregistrements avec résultats de calcul triés par ordre
croissant.
exemple :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
J'aimerais avoir d'abord les enregistrements triés, puis les NULL.
Est-ce possible ?
Si non, peut-on le faire par une (auto-?) jointure ou autre ?
--
Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org
Agitateurs d'idées... accélérateurs de talents !
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE cout IS NOT NULL ORDERBY Cout JOIN SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE Cout IS NULL
A voir pas sûr du résultat. Mais j'essayerais un truc dans le genre. La première te sort ceux qui sont pas NULL et tu les classent par ordre croissant de valeur. Puis la second te prend les NULL à la suite normalement.
Cordialement
TopJB
Le 17/06/2011 08:08, Stéphane Santon a écrit :
J'ai une procedure stockée de calcul sur des champs qui peuvent être NULL. Si je la lance, je reçois d'abord les enregistrements avec calcul NULL, puis les enregistrements avec résultats de calcul triés par ordre croissant.
exemple : SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
J'aimerais avoir d'abord les enregistrements triés, puis les NULL. Est-ce possible ?
Si non, peut-on le faire par une (auto-?) jointure ou autre ?
-- Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org Agitateurs d'idées... accélérateurs de talents !
Utilisant habituellement un CMS avec une syntaxe hors SQL, j'utilise maintenant une procedure stockée qui entraine l'écriture de requêtes à la mano.
J'ai une procedure stockée de calcul sur des champs qui peuvent être NULL. Si je la lance, je reçois d'abord les enregistrements avec calcul NULL, puis les enregistrements avec résultats de calcul triés par ordre croissant.
exemple : SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
J'aimerais avoir d'abord les enregistrements triés, puis les NULL. Est-ce possible ?
Bonjour,
normalement, on devrait pouvoir écrire ça :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles ORDER BY prix, qte NULL LAST
Mais ça ne fonctionne pas dans MySQL. Je suggère ça :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles ORDER BY coalesce(prix, 9999999999) , coalesce(qte, 999999999 )
à adapter, en fct des valeurs possibles des champs.
-- Sébastien
On 06/17/2011 08:08 AM, Stéphane Santon wrote:
Bonjour,
Utilisant habituellement un CMS avec une syntaxe hors SQL, j'utilise
maintenant une procedure stockée qui entraine l'écriture de requêtes à
la mano.
J'ai une procedure stockée de calcul sur des champs qui peuvent être
NULL. Si je la lance, je reçois d'abord les enregistrements avec calcul
NULL, puis les enregistrements avec résultats de calcul triés par ordre
croissant.
exemple :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
J'aimerais avoir d'abord les enregistrements triés, puis les NULL.
Est-ce possible ?
Bonjour,
normalement, on devrait pouvoir écrire ça :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles ORDER
BY prix, qte NULL LAST
Mais ça ne fonctionne pas dans MySQL. Je suggère ça :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles ORDER
BY coalesce(prix, 9999999999) , coalesce(qte, 999999999 )
à adapter, en fct des valeurs possibles des champs.
Utilisant habituellement un CMS avec une syntaxe hors SQL, j'utilise maintenant une procedure stockée qui entraine l'écriture de requêtes à la mano.
J'ai une procedure stockée de calcul sur des champs qui peuvent être NULL. Si je la lance, je reçois d'abord les enregistrements avec calcul NULL, puis les enregistrements avec résultats de calcul triés par ordre croissant.
exemple : SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
J'aimerais avoir d'abord les enregistrements triés, puis les NULL. Est-ce possible ?
Bonjour,
normalement, on devrait pouvoir écrire ça :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles ORDER BY prix, qte NULL LAST
Mais ça ne fonctionne pas dans MySQL. Je suggère ça :
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles ORDER BY coalesce(prix, 9999999999) , coalesce(qte, 999999999 )
à adapter, en fct des valeurs possibles des champs.
-- Sébastien
Sebastien Lardiere
On 06/17/2011 09:31 AM, TopJB wrote:
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE cout IS NOT NULL ORDERBY Cout JOIN SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE Cout IS NULL
un ORDER BY a cet endroit ? surprenant !
-- Sébastien
On 06/17/2011 09:31 AM, TopJB wrote:
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE
cout IS NOT NULL ORDERBY Cout
JOIN
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE
Cout IS NULL
SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE cout IS NOT NULL ORDERBY Cout JOIN SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE Cout IS NULL
un ORDER BY a cet endroit ? surprenant !
-- Sébastien
Alain Montfranc
Stéphane Santon avait quoté à l'envers mais bon c est pas grave :
Bonjour,
Marche pas, MySQL n'aime pas le JOIN ici...
UNION pas JOIN
Stéphane Santon avait quoté à l'envers mais bon c est pas grave :
Stéphane Santon avait quoté à l'envers mais bon c est pas grave :
Bonjour,
Marche pas, MySQL n'aime pas le JOIN ici...
UNION pas JOIN
Stéphane Santon
Bonjour,
Merci pour vos propositions. Ce sera alors :
(SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE prix IS NOT NULL) UNION (SELECT id_article, titre, 999999 as cout FROM articles WHERE prix IS NULL) ORDER BY cout
Alain Montfranc a écrit :
UNION pas JOIN
-- Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org Agitateurs d'idées... accélérateurs de talents !
(SELECT id_article, titre, calcul( prix, qte) as cout FROM articles
WHERE prix IS NOT NULL)
UNION
(SELECT id_article, titre, 999999 as cout FROM articles WHERE prix IS
NULL)
ORDER BY cout
Alain Montfranc a écrit :
UNION pas JOIN
--
Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org
Agitateurs d'idées... accélérateurs de talents !
(SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE prix IS NOT NULL) UNION (SELECT id_article, titre, 999999 as cout FROM articles WHERE prix IS NULL) ORDER BY cout
Alain Montfranc a écrit :
UNION pas JOIN
-- Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org Agitateurs d'idées... accélérateurs de talents !
(SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE prix IS NOT NULL) UNION (SELECT id_article, titre, 999999 as cout FROM articles WHERE prix IS NULL) ORDER BY cout
Car quand je mets le ORDER BY dans le premier SELECT, et aucun ORDER BY après, la première partie de liste n'est pas triée :-/
-- Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org Agitateurs d'idées... accélérateurs de talents !
(SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE
prix IS NOT NULL)
UNION
(SELECT id_article, titre, 999999 as cout FROM articles WHERE prix IS NULL)
ORDER BY cout
Car quand je mets le ORDER BY dans le premier SELECT, et aucun ORDER BY
après, la première partie de liste n'est pas triée :-/
--
Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org
Agitateurs d'idées... accélérateurs de talents !
(SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE prix IS NOT NULL) UNION (SELECT id_article, titre, 999999 as cout FROM articles WHERE prix IS NULL) ORDER BY cout
Car quand je mets le ORDER BY dans le premier SELECT, et aucun ORDER BY après, la première partie de liste n'est pas triée :-/
-- Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org Agitateurs d'idées... accélérateurs de talents !
(SELECT id_article, titre, calcul( prix, qte) as cout, 0 as vide FROM articles WHERE prix IS NOT NULL) UNION (SELECT id_article, titre, NULL as cout, 1 as vide FROM articles WHERE prix IS NULL) ORDER BY vide, cout
Stéphane Santon a écrit :
(SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE prix IS NOT NULL) UNION (SELECT id_article, titre, 999999 as cout FROM articles WHERE prix IS NULL) ORDER BY cout
-- Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org Agitateurs d'idées... accélérateurs de talents !
(SELECT
id_article, titre,
calcul( prix, qte) as cout,
0 as vide
FROM articles
WHERE prix IS NOT NULL)
UNION
(SELECT
id_article, titre,
NULL as cout,
1 as vide
FROM articles
WHERE prix IS NULL)
ORDER BY vide, cout
Stéphane Santon a écrit :
(SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE
prix IS NOT NULL)
UNION
(SELECT id_article, titre, 999999 as cout FROM articles WHERE prix IS NULL)
ORDER BY cout
--
Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org
Agitateurs d'idées... accélérateurs de talents !
(SELECT id_article, titre, calcul( prix, qte) as cout, 0 as vide FROM articles WHERE prix IS NOT NULL) UNION (SELECT id_article, titre, NULL as cout, 1 as vide FROM articles WHERE prix IS NULL) ORDER BY vide, cout
Stéphane Santon a écrit :
(SELECT id_article, titre, calcul( prix, qte) as cout FROM articles WHERE prix IS NOT NULL) UNION (SELECT id_article, titre, 999999 as cout FROM articles WHERE prix IS NULL) ORDER BY cout
-- Stéphane
Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org Agitateurs d'idées... accélérateurs de talents !