Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 25/05/2011, 09h30   #1
 
Inscription : octobre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 38
Points : -1
Points : -1
Par défaut Connaitre la derniere date de commande d'un article au catalogue

Bonjour

Dans le but de faire du ménage dans nos catalogue matériels/consommables/logiciels concernant les catalogue relatifs au commandes/achats sur notre application je souhaiterai lister les articles non commandés depuis 12 mois ou avant mais je n'y arrive pas

J'ai une table catalog avec des ID et j'ai une table ligne de commande qui fait appel aux id du catalogue , puis la date de commande.



Merci de votre aide
litlepom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h40   #2
Futur Membre du Club
 
Inscription : janvier 2011
Messages : 45
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 45
Points : 15
Points : 15
Bonjour,

Code :
1
2
3
4
5
 
SELECT CAT.Id_cat
FROM CAT, LIGNE_COM
WHERE CAT.Id_cat = LIGNE_COM.Id_cat
AND DATEDIFF(DAY,DATE_COM) > 365
Cela fonctionne si tu prend les articles qui ont été commandés déjà une fois, qui sont donc renseignés dans la table LIGNE_COM.

Veux-tu également ceux qui n'ont jamais été commandés ?

Merci
Aiglon13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h43   #3
 
Inscription : octobre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 38
Points : -1
Points : -1
Ah oui je veux bien
litlepom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h46   #4
 
Inscription : octobre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 38
Points : -1
Points : -1
En fait j 'ai ma table am_catalog qui contient le catalog et les articles , avec un catalog id , puis j'ai ma tables ep_order qui contient des id de commandes puis ma tables ep_order_details qui contients les lignes de commandes avec des lignes order_details_id qui correspond au lignes de commandes puis un order_id qui contient le numero de commande , puis un catalog_id ...
la date est présente sur la table ep_order avec un champs date de type validation_date

merci à toi
litlepom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h58   #5
Futur Membre du Club
 
Inscription : janvier 2011
Messages : 45
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 45
Points : 15
Points : 15
Peux-tu exprimer correctement la syntaxe de tes tables car j'ai du mal à suivre là, désolé.
Du genre :

AM_CATALOG (Id_cat)
EP_ORDER(Id_com, validation_date)
EP_ORDER_DETAILS(Order_details_id, Order_id, Id_cat)

Merci
Aiglon13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h01   #6
 
Inscription : octobre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 38
Points : -1
Points : -1
am_catalog ( catalog id)
ep_order ( order_id , order number, validation date)
ep_order_details ( order_details_id , order_id, catalog_id)

merci a toi
litlepom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h23   #7
Futur Membre du Club
 
Homme Stéphane Bouvet
Chef de projet MOA
Inscription : mai 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Bouvet
Âge : 35
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Biens de consommation

Informations forums :
Inscription : mai 2011
Messages : 40
Points : 15
Points : 15
Code :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT cat.CATALOG_ID
FROM AM_CATALOG cat
LEFT OUTER JOIN (
    SELECT CATALOG_ID
    FROM EP_ORDER_DETAILS ed
    INNER JOIN EP_ORDER e ON ep.ORDER_ID = e.ORDER_ID
    WHERE VALIDATION_DATE > DATEDIFF(day, -365, GETDATE())
    ) cde_moins_un_an
ON cat.CATALOG_ID = cde_moins_un_an.CATALOG_ID
WHERE cde_moins_un_an.CATALOG_ID IS NULL
J'ai bon ? Pour le coup je ne prend que les articles n'ayant pas été commandés depuis moins d'un an, voire pas commandés du tout.
darKStein est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h25   #8
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

Les produit du catalogue qui n'ont pas été commandés dans les douze derniers mois ?
C'est à dire :Quelles sont les lignes de la table catalogue, pour lesquels il n'existe pas de ligne correspondante (catalog_id) dans la table des commandes dont la date est supérieure à "maintenant moins douze mois" :

Code SQL :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT catalog_id 
FROM am_catalog C
WHERE NOT EXISTS (
    SELECT *
    FROM ep_order O
    INNER JOIN ep_order_details D
        ON O.order_id = D.order_id
    WHERE D.catalog_id = C.catalog_id
        AND O.validation_date > DATEADD(MONTH, -12, GETDATE())
)
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h59   #9
 
Inscription : octobre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 38
Points : -1
Points : -1
Merci de votre réponse

J'ai mis à jour celle ci mais sa me sort beaucoup beaucoup de lignes

Code :
1
2
3
4
5
6
7
8
9
SELECT catalog_id, article_model,manufacturer_ref
FROM am_catalog C
WHERE NOT EXISTS (
    SELECT *
    FROM ep_order O
    INNER JOIN ep_order_details D
        ON O.order_id = D.order_id
    WHERE D.catalog_id = C.catalog_id
        AND O.validation_date > DATEADD(MONTH, -12, GETDATE())
litlepom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 08h39   #10
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
Merci de votre réponse

J'ai mis à jour celle ci mais sa me sort beaucoup beaucoup de lignes

Pourtant la requête est bonne... mais attention il va également vous ressortir les produits jamais commandés...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk 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 15h22.


 
 
 
 
Partenaires

Hébergement Web