Как извлечь значения из таблицы SQL - PullRequest
0 голосов
/ 20 мая 2011
> ID    ProductID   OptionName  OptionValue             SKU
> 
> 1           709      Title      Como  test
> 2           709     Color          Cobalt test
> 3           709     Color          Crimson            RNA.331.02.MM1K
> 4           709     Title          Como G2            RNA.331.02.MM1K
> 7           709     Color          another color      test ipn
> 8           709     Title          another title      test ipn

Из приведенной выше таблицы я хочу следующее

Select distinct OptionName from myTable where ProductID = 709 group by OptionValue

но sql server выдает ошибку group by и не знает, как мне сгруппировать все разные значения в отдельное OptionName?

или я просто не могу?

желаемый результат выглядит следующим образом

[0] => array

    [Color] => array
        [0] => Cobalt test
        [1] => Crimson
        [2] => another color
   [Title] => array
       [0] => Como test
       [1] => Como G2
       [2] => another title

Ответы [ 4 ]

2 голосов
/ 20 мая 2011

Вам необходимо использовать статистическую функцию для полей (например, FIRST (), LAST (), MAX (), AVG () ...), которые вы выбираете, когда у вас есть предложение GROUP BY.Кроме того, отличное не требуется, когда у вас есть GROUP BY.Можете ли вы объяснить, какие данные вы хотите извлечь, а не только опубликовать ошибочный запрос?

РЕДАКТИРОВАТЬ :

SELECT OptionName, OptionValue FROM myTable WHERE ProductID = 709 ORDER BY OptionName ASC

Будет производить это:

> OptionName    OptionValue             
> 
> Color          Cobalt test
> Color          Crimson                
> Color          another color   
> Title          Como   test    
> Title          Como G2
> Title          another title

Преобразование в массивы и т. Д. - это то, что вы должны делать в своем приложении, а не в SQL.

1 голос
/ 20 мая 2011

Попробуй без внятного и с OptionValue там

select OptionName
from myTable 
where ProductID = 709 
group by OptionName, OptionValue

Использование GROUP BY даст вам различные комбинации.

1 голос
/ 20 мая 2011

Вот одно из решений

Select OptionName from myTable where ProductID = 709 limit 1

почему в group by есть подчеркивание

0 голосов
/ 20 мая 2011

Используя GROUP BY OptionValue, вы говорите это ...
- Получить все записи из моего запроса в обычном режиме
- Групповые записи, имеющие одинаковое OptionValue
- Вернуть только одну запись для каждой из этих групп

В вашем случае вы затем пытаетесь вернуть OptionName. Это проблема, потому что существует несколько OptionName для отображения на группу, но только одна запись для каждой группы.


Как уже было сказано, правильный запрос зависит от того, что вам нужно, и я не на 100% уверен в этом из того, что вы написали. (Дать пример нужных вам результатов и узнать, как их получить, поможет.)


Полагаю, вам нужны только две записи (Color и Title). Если это так, вы можете сделать любой из этих ...

SELECT DISTINCT OptionName FROM myTable WHERE ProductID = 709

SELECT OptionName FROM myTable WHERE ProductID = 709 GROUP BY OptionName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...