J'ai 3 tables avec une relation plusieurs-à-plusieurs. Je veux sélectionner pour l'utilisateur spécifique et la dernière ligne insérée pour ce produit.MySQL sélectionner ligne avec des conditions spécifiques et la dernière ligne insérée pour ces conditions dans plusieurs à plusieurs
Table 'utilisateur' contient des informations personnelles de l'utilisateur:
userID persID firstName lastName gender
42 9559000 Jane Rae female
43 9559001 John Doe male
.
.
.
Table 'storage1' contient des informations sur le produit:
storageID product productAttribute productSize storageQTY
1 shirt red S 10
2 shirt blue M 10
.
.
.
13 shirt green L 10
14 shirt green XL 9
15 shirt green XXL 7
.
.
39 trousers male 60 10
40 trousers male 62 8
.
.
59 shoes standard 41 10
60 shoes standard 42 7
61 shoes standard 43 10
62 shoes standard 44 10
63 shoes standard 45 9
.
.
72 jacket red L 10
73 jacket red XL 9
74 jacket red XXL 6
et de table activityRecords:
recordsID userID storageID startDate expDate
99 43 15 2017-09-14
100 43 74 2017-09-14
101 43 39 2017-09-14
102 43 13 2017-09-14
103 43 14 2017-09-14
104 43 40 2017-09-14
105 43 14 2017-09-14
106 43 63 2017-09-14
107 43 59 2017-09-14
Jusqu'à présent, je avoir ce code qui résulte uniquement de la valeur maximale du produit lié à un utilisateur spécifique.
select
persID,
firstName,
lastName,
gender,
max(case when storage1.product = 'shoes' then storage1.productSize end) shoes,
max(case when storage1.product = 'trousers' then storage1.productSize end) trousers,
max(case when storage1.product = 'shirt' then storage1.productSize end) shirt,
max(case when storage1.product = 'shirt' then storage1.productAttribute end) color,
max(case when storage1.product = 'jacket' then storage1.productSize end) jacket,
startDate,
expDate
from activityRecords
left join user on activityRecords.userID = user.userID
left join storage1 on activityRecords.storageID = storage1.storageID
where persID='9559001'
group by persID, firstName, lastName, gender, startDate, expDate
order by persID
qui résultent ceci:
persID firstName lastName gender shoes trousers shirt color jacket startDate expDate
9559001 John Doe male 45 null null null null 2017-09-14
9559001 John Doe male null 62 null null null 2017-09-14
9559001 John Doe male null null XXL green null 2017-09-14
9559001 John Doe male null null null null XXL 2017-09-14
mais je veux obtenir ceci:
persID firstName lastName gender shoes trousers shirt color jacket startDate expDate
9559001 John Doe male 41 null null null null 2017-09-14
9559001 John Doe male null 62 null null null 2017-09-14
9559001 John Doe male null null XL green null 2017-09-14
9559001 John Doe male null null null null XXL 2017-09-14
parce que les chaussures numéro 41 est la dernière entrée pour les chaussures dans le tableau activityRecords (recordsID 107) et taille de chemise XL est la dernière entrée pour chemise dans la table activityRecords (recordsID 105). Alors que maintenant il y a des chaussures sélectionnées recordsID 106 et shirt select est recordsID 99. Je sais que cela est lié à cause de mon code de sélection (en utilisant max (cas quand ...)), mais je ne sais pas comment sélectionner entrée la plus récente pour un produit et une personne spécifiques. Tout le monde peut m'aider avec ça? Merci
il montre plus d'une dernière ligne, mais il est ok pour moi. Merci – tomas