IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Lien entre 2 tables sans retrait [AC-2013]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    éditeur
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : éditeur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Lien entre 2 tables sans retrait
    Bonjour,

    La recherche est facile à énoncer ... mais je ne sais pas par où m'orienter au départ :

    2 tables : Produits et Promos avec un lien dans Promos qui reprend l'ID de Produits.

    Je voudrais afficher tous les produits mais quand c'est en promo, afficher le prix en promo !

    J'ai beau essayer ...

    Merci par avance

    Nom : Exemple.gif
Affichages : 88
Taille : 33,3 Ko

    Nom : Produits.jpg
Affichages : 83
Taille : 88,8 Ko

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    Selon les cas cela peut être plus ou moins complexe et pour ce que je vois les tables ne font rien pour faciliter le travail !
    - le prix est à la fois dans la fiche produit et dans la table promo
    - il semble dépendre de la date et de la quantité
    - la table promo contient à la fois une remise (sur le prix produit ?) et un prix !
    - le prix et la quantité sont dans le même champ et en texte !!!

    Et je passe sur les redondances un peu partout (la famille et le site sont dans les 2 tables, la table produit a 4 prix dont au moins un semble être la somme de 2 autres, la tva est en taux et en valeur...)

    Pour se sortir de ce guêpier 2 solutions non exclusives :
    -revoir l'analyse et simplifier tout ça
    - écrire une fonction dans un module : calcul_prix(article, site, jour, quantite) et une fois cette fonction écrite (avec autant de requêtes que nécessaire pour couvrir tous les cas...), l'utiliser dans la requête finale - et prier pour que les temps de réponses ne soient pas trop mauvais.

    Bon courage !
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre à l'essai
    Homme Profil pro
    éditeur
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : éditeur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    HELP !

    Je ne sais si faire :

    1 seule requête

    Ou 2 requêtes sur Produits et sur Promos et régler les conditions dans la combo.

    Merci par avance pour votre aide

    Cdl

  4. #4
    Membre à l'essai
    Homme Profil pro
    éditeur
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : éditeur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Toutes vos remarques sont justifiés :

    1 - Des champs que j'avais mis en double pour voir si je retrouvais mes petits
    2 - A cause d'une mauvaise explication de ma part.

    il y aura plusieurs sites d'où l'ajout systématique du nom du site dans les tables (SiteName).
    Sinon, (ce serai l'idéal) :
    • La promo est un % appliqué au prix ou à la quantité (Promotion)
    • Les promos peuvent avoir lieu sur le prix ou sur la quantité (Promo_contenu)
    • Les promos auront lieu pendant une période donnée (Promo_deb & Promo_fin)
    • Les promos pourront concerner qu'une gamme de produit (Promo_etendue).

    Je pense ne rien avoir oublié !
    Merci par avance

    NB : les tables plus lisibles

    Nom : Produits2.gif
Affichages : 58
Taille : 29,1 Ko

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    En gros il faut
    - une table des produits
    - une table des tarifs

    La 1e me semble commune à tous les sites, la 2e spécifique à chaque politique tarifaire si elle est décentralisée

    Comme la politique tarifaire semble très libre, le prix est nécessairement le résultat d'un calcul savant et il est peu probable qu'il puisse être obtenu par une simple requete, d'où ma suggestion de faire une fonction publique

    Enfin je tiens à dire que si le logiciel à obtenir doit être professionnel et multi-site, access est le pire outil à utiliser pour cela et il faudra des compétences poussées en informatique pour l'écrire
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  6. #6
    Membre à l'essai
    Homme Profil pro
    éditeur
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : éditeur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    J'ai trouvé tout seul !

    Voici ma solution :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    	<CFQUERY name="TableProduits2" datasource="#session.dbname#">
    		SELECT 
    			P.Prod_ID,
    			P.Fam_ID,
    			P.SiteName,
    			P.PU,
    			P.Prod_HT,
    			P.Qte,
    			PP.PPromos_ID,
    			PP.PProd_ID,
    			PP.Promotion,
    			PP.Promo_contenu,
    			PP.Promo_deb,
    			PP.Promo_fin 
    		FROM Produits P 
    		LEFT JOIN Produits_promos PP
    		ON PP.PProd_ID = P.Prod_ID
    		WHERE P.SiteName='#Session.site#'
    			AND P.Fam_ID = 363
    		ORDER BY P.Prod_ID
    	</CFQUERY>	
    </CFIF>
    <TR>
    	<TD class="txtmm">&nbsp;Quantité&nbsp;*</TD><!--- Quantité --->
    	<TD class="txtmm">
    		<SELECT name="form.Prod_ID" required="yes">
    			<OPTION class="txtmm" value="">Réponse Quantité requise</OPTION>
    			<CFOUTPUT query="TableProduits2">
    				<CFIF #TableProduits2.Prod_ID# IS NOT #TableProduits2.PProd_ID#>
    					<OPTION class="txtmm" value="#Prod_ID#">#TableProduits2.Qte# cartiboks à #lsnumberformat(TableProduits2.PU,'9.99')# € HT pièce soit #lsnumberformat((TableProduits2.PU*TableProduits2.Qte),'9.99')# € HT - #TableProduits2.Promo_contenu#</OPTION>
    				<CFELSE>
    					<cfset debut="#TableProduits2.Promo_deb#">
    					<cfset debut=#DateFormat(debut,"dd/mm/yyyy")#>
    					<cfset debut=#createodbcdate(debut)#>
    					<cfset fin="#TableProduits2.Promo_fin#">
    					<cfset fin=#DateFormat(fin,"dd/mm/yyyy")#>
    					<cfset fin="#createodbcdate(fin)#">
    					<cfset jour="#createodbcdate(now())#">
    					<!--- Date début promo --->
    					<CFIF #DateCompare(jour,debut)# IS 1>
    						<!--- Date fin promo ---> 
    						<CFIF #DateCompare(jour,fin)# IS -1> 
    							<CFIF #TableProduits2.Promo_contenu# IS "P"> <!--- Promo/Prix --->
    								<cfset PPU=(#PU#*(100-#TableProduits2.Promotion#)/100)>
    								<cfset PHT=(#Prod_ht#*(100-#TableProduits2.Promotion#)/100)>
    								<OPTION style="background: red" value="#TableProduits2.Prod_ID#">Promo ! #TableProduits2.Qte# cartiboks à #lsnumberformat(PPU,'9.99')# au lieu de #lsnumberformat(TableProduits2.PU,'9.99')# € HT pièce soit #lsnumberformat(PHT,'9.99')# € HT</span></OPTION>
    							<CFELSE><!--- Promo/Quantité --->
    								<cfset PQte=#TableProduits2.Qte#+(#TableProduits2.Qte#*#TableProduits2.Promotion#/100)> 
    								<OPTION style="background: green" value="#TableProduits2.Prod_ID#">Promo ! #PQte# au lieu de #TableProduits2.Qte#  cartiboks à #lsnumberformat(TableProduits2.PU,'9.99')# € HT pièce soit #lsnumberformat(TableProduits2.Prod_ht,'9.99')# € HT</span></OPTION>
    							</CFIF>
    						</CFIF>	
    					</CFIF>
    				</CFIF>
    			</CFOUTPUT>
    		</SELECT>
    	</TD>
    </TR>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lien entre 2 tables sans retrait
    Par jean-marieb dans le forum Langage SQL
    Réponses: 10
    Dernier message: 27/02/2021, 19h45
  2. [ACCESS] lien entre 2 tables mais sans intégrité référentielle
    Par Philippe PONS dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/06/2007, 21h33
  3. lien entre les tables
    Par cedric12 dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 03/10/2005, 23h39
  4. [VB.NET] ComboBox lien entre deux tables
    Par VDB1 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/07/2004, 12h15
  5. lien entre les table de paradox
    Par salim_intic1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/05/2004, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo