Выберите отдельные записи в соединении

13
задан George 15 January 2010 в 10:13
поделиться

2 ответа

Оформление должно делать то, что вы ищете:

SELECT DISTINCT items.ItemName, items.ItemId FROM items
JOIN sales ON items.ItemId = sales.ItemId 
WHERE sales.StoreID = ? ORDER BY sales.SaleWeek DESC;

, которые вернутся только в отдельности элементов. Itemoname, items.itemid

22
ответ дан 1 December 2019 в 20:11
поделиться

Многопоточность - не единственная модель параллелизма. Модель актёров (Эрланг, Скала) является примером несколько иного подхода.

http://www.scala-lang.org/node/242

-121--2789828-

Как и все вопросы о времени работы, вы действительно должны пройти тестирование в среде, в которой ожидается запуск кода. Различные версии JVM и конфигурации аппаратных средств (ЦП, память и т.д.) могут иметь разные результаты. Это действительно зависит от конкретных требований к производительности.

Но затем, прежде чем перейти на этот уровень настройки производительности, следует сначала четко написать код и сначала сделать его правильным. Компилятор и JIT смогут выполнять множество оптимизаций с помощью обычных алгоритмических выражений, но иногда оптимизации рук могут спутать эти автоматизированные оптимизации. После того, как у вас есть рабочий продукт и если производительность не то, что вы хотели бы, то профилировать и работать только в горячих точках.

В этом случае при копировании целых массивов следует использовать System.arraycopy , поскольку это стандартный способ. Компилятор может теперь или в будущем предоставить дополнительные оптимизации для этого, так как основные API полагаются на это в значительной степени вы можете быть уверены, что это то, что JVM разработчики всегда хотят, чтобы работать оптимально.

Вам нужно будет пройти через некоторые циклы, хотя поскольку System.arraycopy может выполнять только один объект массива и с многомасштабными массивами Java действительно являются массивами массивов. Так что...

public int[][][] copyOf3Dim(int[][][] array) {
    int[][][] copy;
    copy = new int[array.length][][];
    for (int i = 0; i < array.length; i++) {
        copy[i] = new int[array[i].length][];
        for (int j = 0; j < array[i].length; j++) {
            copy[i][j] = new int[array[i][j].length];
            System.arraycopy(array[i][j], 0, copy[i][j], 0, 
                array[i][j].length);
        }
    }
    return copy;
}    

Или вы могли бы использовать Arrays.copyOf , который использует System.arraycopy и некоторое отражение внутри (поэтому не так быстро, как непосредственно, используя System.arraycopy самостоятельно), но не делает глубокой копии.

-121--3219380-

YOu также прокомментировала неделю продаж. И желая самой последней недели, вы можете попробовать использовать GROUP BY

SELECT 
      items.ItemName, 
      items.ItemId,
      max( Sales.SaleWeek ) MostRecentSaleWeek
   FROM 
      items JOIN sales ON items.ItemId = sales.ItemId
   WHERE 
      sales.StoreID = ? 
   GROUP BY
      items.ItemID,
      items.ItemName
   ORDER BY
      MostRecentSaleWeek,   -- ordinal column number 3 via the MAX() call
      items.ItemName

Возможно, вам придется изменить ORDER BY на порядковый номер 3-го столбца, если вы хотите это сделать на основе этого столбца.. Этот запрос даст вам каждый отдельный предмет И последнюю неделю он был продан.

8
ответ дан 1 December 2019 в 20:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: