2013-05-24 2 views
0

У меня есть 4 столбцов в таблице называется ноты - 'artist','genre', 'writer' , 'producer'.Предложения требуется написание сложных запросов - SQLITE

Мне нужно написать запрос таким образом, что она возвращает значение 0, если нет повторения значений, соответствующих имя столбца; если есть повторение значений, он должен вернуть значение 1, соответствующее названию столбца.

Любая помощь очень ценится

+0

просто добавьте запрос, который вы пробовали –

+1

который значение ?? ** '' artist'or 'genre'or' writer 'или' производитель '. ** – Luv

+0

соответствует всем тем - «художник», «жанр», «писатель» и «продюсер» – user264953

ответ

2
SELECT (COUNT(artist) <> COUNT(DISTINCT artist)) artist, 
     (COUNT(genre) <> COUNT(DISTINCT genre)) genre, 
     (COUNT(writer) <> COUNT(DISTINCT writer)) writer, 
     (COUNT(producer) <> COUNT(DISTINCT producer)) producer 
FROM musics 

Другой вариант

SELECT 
(SELECT (COUNT(*) > 0) 
    FROM (SELECT 1 FROM musics GROUP BY artist HAVING COUNT(*) > 1) a 
) artist, 
(SELECT (COUNT(*) > 0) 
    FROM (SELECT 1 FROM musics GROUP BY genre HAVING COUNT(*) > 1) g 
) genre, 
(SELECT (COUNT(*) > 0) 
    FROM (SELECT 1 FROM musics GROUP BY writer HAVING COUNT(*) > 1) w 
) writer, 
(SELECT (COUNT(*) > 0) 
    FROM (SELECT 1 FROM musics GROUP BY producer HAVING COUNT(*) > 1) p 
) producer 

Выборочные данные

| artist | genre | writer | producer | 
------------------------------------------ 
| artist1 | genre1 | writer1 | producer1 | 
| artist2 | genre2 | writer1 | producer2 | 
| artist1 | genre3 | writer3 | producer3 | 

Пример вывода:

| artist | genre | writer | producer | 
-------------------------------------- 
|  1 |  0 |  1 |  0 | 

SQLFiddle

+0

блестящий. ударь! Хотя я получаю 1 и 0 в результате - т.е. Я получаю 0 вместо 1 и 1 вместо 0 – user264953

+0

@ user264953 Выполняется точно так, как вы просили 0 - если повторений нет, 1 - если есть один – peterm

1

написать SELECT COUNT заявление, используя отчетливый с заданной колонки и другой SELECT COUNT без отчетливых и сравнить оба основаны на ваше требование

2

Для Artist

select convert(bit,(count(1)-1)) 
from table_name 
group by artist -- <-- Replace artist with column name for which duplicate 
+0

извините, моя ошибка. На самом деле мне это нужно для sqlite, и запрос не работает для sqlite. Кроме того, могу ли я получить «художник», «жанр», «писатель» и «продюсер», используя один запрос? – user264953

+0

+1 просто потому, что ОП не знал, что такое его собственная СУБД. –

1

вы можете использовать 4 разных запроса с объединением & каждый запрос должен содержать счетчик (название столбца) + группу по предложению

Смежные вопросы