MySQL Join и новейшая информация о лоте

У меня есть четыре стола. Первое описание сочетания предметов. Вторая — это таблица связей между миксом и элементами. Третий — таблица позиций, а четвертый содержит информацию о лоте — номер лота и когда этот лот начинает использоваться.

микшировать

mixID | mixName
----------------
1     | Foxtrot
2     | Romeo

mixLink

mixID | itemID
----------------
1     | 1
1     | 2
1     | 3

вещь

itemID| itemName
----------------
1     | square
2     | triangle
3     | hexagon

itemLots

itemID| lotNo | startDate
-------------------------
1     | 22/5/3| 22/07/16
2     | 03/5  | 25/07/16
2     | 04/19 | 12/08/16
3     | 15/0  | 05/08/16

Теперь мне нужно иметь возможность получить информацию из базы данных, которая детализирует все элементы из микса, а также последний использованный номер лота, примерно так:

itemName | lotNo
----------------
square   | 22/5/3
triangle | 04/19
hexagon  | 15/0

Я пробовал дюжину различных сочетаний объединений, групп по, максимумов, подзапросов и имений; все безрезультатно. Буду признателен за любую помощь, я часами выдергиваю волосы и чувствую, что мои ногти просто соскребают раствор!

0

Решение

Это даст вам результат, к которому вы стремитесь, и будет довольно неплохо работать, если вы правильно сделали свои индексы. Я не уверен, как вы собираетесь ссылаться mix как это не видно в вашем примере вывода, но я включил его в WHERE надеюсь, вы сможете понять, где вы будете его использовать.

SELECT i.itemName
, (SELECT il.lotNo FROM itemLots il
WHERE il.itemID=i.itemID
ORDER BY il.startDate desc
LIMIT 1) as lotNo
FROM item i
JOIN mixLink ml ON ml.itemID=i.itemID
JOIN mix m ON m.mixID=ml.mixID
WHERE m.mixName="Foxtrot";
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]