У меня есть четыре стола. Первое описание сочетания предметов. Вторая — это таблица связей между миксом и элементами. Третий — таблица позиций, а четвертый содержит информацию о лоте — номер лота и когда этот лот начинает использоваться.
микшировать
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
Я пробовал дюжину различных сочетаний объединений, групп по, максимумов, подзапросов и имений; все безрезультатно. Буду признателен за любую помощь, я часами выдергиваю волосы и чувствую, что мои ногти просто соскребают раствор!
Это даст вам результат, к которому вы стремитесь, и будет довольно неплохо работать, если вы правильно сделали свои индексы. Я не уверен, как вы собираетесь ссылаться 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";
Других решений пока нет …