Mysql: запрос соединения с count [duplicate]

Я использовал это в своей акустической модели: возможно, это помогает в модели ур.

def one_hot_encoding(x, n_out):
x = x.astype(int)  
shape = x.shape
x = x.flatten()
N = len(x)
x_categ = np.zeros((N,n_out))
x_categ[np.arange(N), x] = 1
return x_categ.reshape((shape)+(n_out,))
9
задан Nicholas Post 11 September 2013 в 21:38
поделиться

4 ответа

Вы фильтруете вторую таблицу в where. Значения могут быть NULL и NULL не совпадают.

Переместить условие where в on:

SELECT 1.Label, COUNT(2.values)
FROM Table1 1
    LEFT JOIN Table2 2 ON 1.fk = 1.pk and
              2.Date BETWEEN 1/1/2010 AND 12/31/2010    
GROUP BY 1.Label
14
ответ дан Gordon Linoff 19 August 2018 в 08:35
поделиться
  • 1
    Это сделало это, спасибо! У меня было несколько моих фильтров в соединении, но не все из них. Теперь, когда я переместил все фильтры Table2 в JOIN, он отлично работает. – BClaydon 11 September 2013 в 21:41

Прежде всего, я не думаю, что это хорошая идея иметь номер как псевдоним. Используйте символ или слово вместо этого.

Я бы поставил критерии в join.

SELECT T1.Label, COUNT(T2.values)
FROM Table1 T1
    LEFT JOIN Table2 T2 ON T1.fk = T1.pk
    AND T2.Date BETWEEN '20100101' AND '20101231'    
GROUP BY T1.Label

Другие комментарии:

  1. Я бы использовал ANSI (yyyyMMdd) для дат, поэтому нет недоразумений.
  2. Я бы знал о МЕЖДУ, поскольку неясно, что вы хотите сделать, если дата «20101231 01:00» вам нравится включать эту дату или нет? > = и & lt; = или> = и & lt; яснее.
0
ответ дан Giannis Paraskevopoulos 19 August 2018 в 08:35
поделиться

просто переместите условие в WHERE в предложение ON.

LEFT JOIN Table2 2 ON 1.fk = 1.pk AND 2.Date BETWEEN '1/1/2010' AND '12/31/2010'
3
ответ дан John Woo 19 August 2018 в 08:35
поделиться

Если вы используете SQL Server, поместите одинарные кавычки вокруг дат. Если нет, тогда он будет вычислять выражение вместо даты.

BETWEEN '1/1/2010' AND '12/31/2010'
0
ответ дан Nicholas Post 19 August 2018 в 08:35
поделиться
Другие вопросы по тегам:

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