Bonjour,

J’essaye de me baser sur ce poste mais décidément je n’y arrive pas alors que ma question m’a l’air plus simple.
http://www.developpez.net/forums/d13...fonction-date/


Voici mes tables (simplifiées)
Code : 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 
-- --------------------------------------------------------
 
--
-- Structure de la table `t_langue`
--
 
CREATE TABLE IF NOT EXISTS `t_langue` (
  `lang_id` int(11) NOT NULL AUTO_INCREMENT,
  `lang_libelle` varchar(100) NOT NULL,
  PRIMARY KEY (`lang_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
 
--
-- Contenu de la table `t_langue`
--
 
INSERT INTO `t_langue` (`lang_id`, `lang_libelle`) VALUES
(1, 'Français'),
(2, 'Anglais');
 
-- --------------------------------------------------------
 
--
-- Structure de la table `t_produit`
--
 
CREATE TABLE IF NOT EXISTS `t_produit` (
  `pr_id` int(11) NOT NULL AUTO_INCREMENT,
  `pr_ref_fournisseur` varchar(100) NOT NULL,
  `pr_stock` decimal(10,4) NOT NULL,
  `pr_active` tinyint(1) NOT NULL,
  PRIMARY KEY (`pr_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
 
--
-- Contenu de la table `t_produit`
--
 
INSERT INTO `t_produit` (`pr_id`, `pr_ref_fournisseur`, `pr_stock`, `pr_active`) VALUES
(1, '4401', '200.0000', 1),
(2, '4402', '500.0000', 1),
(3, '4456', '10.0000', 1);
 
-- --------------------------------------------------------
 
--
-- Structure de la table `t_produit_lang`
--
 
CREATE TABLE IF NOT EXISTS `t_produit_lang` (
  `pr_id` int(11) NOT NULL,
  `lang_id` int(11) NOT NULL,
  `pr_nom` varchar(100) NOT NULL,
  `pr_description_courte` varchar(250) NOT NULL,
  `pr_description` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
--
-- Contenu de la table `t_produit_lang`
--
 
INSERT INTO `t_produit_lang` (`pr_id`, `lang_id`, `pr_nom`, `pr_description_courte`, `pr_description`) VALUES
(1, 1, 'Mon produit 1', 'Blablabla', 'Blablabla Blablabla Blablabla Blablabla'),
(1, 2, 'My Product 1', 'Blibliblibli', 'Blibliblibli Blibliblibli Blibliblibli Blibliblibli'),
(2, 1, 'Mon produit 2', 'Blobloblo', 'Blobloblo Blobloblo Blobloblo Blobloblo'),
(2, 2, 'My Product 2', 'Blublublublu', 'Blublublublu Blublublublu Blublublublu'),
(3, 1, 'Mon produit 3', 'Blyblybly', 'Blyblybly Blyblybly Blyblybly'),
(3, 2, 'My Product 3', 'Bloubloubloublou', 'Bloubloubloublou Bloubloubloublou Bloubloubloublou');
 
-- --------------------------------------------------------
 
--
-- Structure de la table `t_produit_prix`
--
 
CREATE TABLE IF NOT EXISTS `t_produit_prix` (
  `pp_id` int(11) NOT NULL AUTO_INCREMENT,
  `pr_id` int(11) NOT NULL,
  `pr_prix_ht` decimal(10,4) NOT NULL,
  `pr_date` date NOT NULL,
  PRIMARY KEY (`pp_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
 
--
-- Contenu de la table `t_produit_prix`
--
 
INSERT INTO `t_produit_prix` (`pp_id`, `pr_id`, `pr_prix_ht`, `pr_date`) VALUES
(1, 1, '24.6700', '2016-10-03'),
(2, 1, '45.5000', '2016-10-20'),
(3, 2, '250.9800', '2016-10-21'),
(4, 3, '3721.9800', '2016-10-22'),
(5, 1, '10.0000', '2014-08-04'),
(6, 1, '425.0000', '2015-02-11'),
(7, 1, '32.0000', '1950-10-11'),
(8, 2, '50.0000', '1950-10-11'),
(9, 3, '12000.0000', '1950-10-11');
J’essaye de faire une vue qui m’affiche la liste de mes produits avec les textes dans la bonne langue (nom, description,…), stock, référence, patin couffin,… et le prix, le dernier enregistré (donc inférieur ou égale à la date demandée).

J’y arrive quand je veux un seul produit comme cela…

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
SELECT p.pr_id AS id, p.pr_ref_fournisseur AS reffour, pl.pr_nom AS nom, pl.pr_description_courte AS descshort, pl.pr_description AS desclong, p.pr_stock AS stock, pp.pr_prix_ht AS prixht, pp.pr_date AS dateadd
FROM `t_produit` AS p
INNER JOIN `t_produit_prix` AS pp ON p.pr_id = pp.pr_id
INNER JOIN `t_produit_lang` AS pl ON p.pr_id = pl.pr_id
WHERE p.pr_id = 3
AND pp.pr_date <= '2016-11-02'
ORDER BY pp.pr_date DESC LIMIT 0,1
Mais pour sortir la liste je n’y arrive plus. Le pire c’est que j’ai sus. Je crois que je devrai avoir un WHERE (select…) quelque chose.

Please Help