У меня есть две таблицы MySQL (продукт и истории цен), что я хотел бы присоединиться к:Как сделать "отчетливый" присоединиться к MySQL
Product
стол:
Id = int
Name = varchar
Manufacturer = varchar
UPC = varchar
Date_added = datetime
Price_h
стол:
Id = int
Product_id = int
Price = int
Date = datetime
Я могу выполнить простую LEFT JOIN:
SELECT Product.UPC, Product.Name, Price_h.Price, Price_h.Date
FROM Product
LEFT JOIN Price_h
ON Product.Id = Price_h.Product_id;
Но, как и ожидалось, если у меня есть несколько позиций для продукта в таблице истории цен, я получаю один результат по каждой исторической цене.
Как может быть объединение, которое будет возвращать только один экземпляр каждого продукта, только к нему присоединяется только самая новая запись из таблицы истории цен?
+1: он должен быть быстрее моего. Хотя длинный код. – a1ex07
Я понимаю, почему вы говорите, что это должно быть быстрее, но мне еще предстоит найти то обстоятельство, где оно есть. Я думаю, что это может иметь какое-то отношение к большому количеству записей, которые у меня есть в таблице истории цен (3.5M). Возможно, это поможет, если я добавлю индекс в столбец Price_h.date? –
Кажется, что этот запрос занимает примерно такое же количество времени независимо от того, сколько результатов оно возвращает, тогда как запрос a1ex07 занимает больше времени с увеличением результатов, как и следовало ожидать. Я просто немного удивился тому, как медленно это происходит для небольших наборов результатов и насколько быстро решение a1ex07 для одного и того же небольшого набора результатов. Поскольку в «Реальном мире» я буду работать с довольно большими результирующими наборами, я выбрал это как ответ. –