Прапанова мела патрэбу напісанне складаных запытаў - SQLite

У мяне ёсць 4 слупкоў у табліцы называецца ноты - «група», «жанр», «пісьменнік», «вытворца» .

Я павінен напісаць запыт такім чынам, што яна вяртае значэнне 0, калі няма паўтарэння значэнняў, адпаведных імя слупка; калі ёсць паўтарэнне значэнняў, яна павінна вяртаць значэнне 1, адпаведная гэтае імя слупка.

Любая дапамога вельмі шануецца

0
проста дадаць запыт, які вы спрабавалі
дададзена аўтар Jignesh.Raj, крыніца
проста дадаць запыт, які вы спрабавалі
дададзена аўтар Jignesh.Raj, крыніца
які адпавядае ўсім тым - «мастак», «жанр», «пісьменнік» і «прадзюсар»
дададзена аўтар user264953, крыніца
які адпавядае ўсім тым - «мастак», «жанр», «пісьменнік» і «прадзюсар»
дададзена аўтар user264953, крыніца
якое значэнне ?? '' artist'or genre'or 'пісьменнік' ці 'вытворцы'.
дададзена аўтар Luv, крыніца
якое значэнне ?? '' artist'or genre'or 'пісьменнік' ці 'вытворцы'.
дададзена аўтар Luv, крыніца

8 адказы

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

2
дададзена
бліскучы. барабаніць! Хоць я атрымліваю 1 і 0 пераключаныя ў выніку - гэта значыць; Я атрымліваю 0 замест 1 і 1 замест 0
дададзена аўтар user264953, крыніца
@ User264953 Ён робіць менавіта тое, як вы прасілі 0 - калі няма паўтарэння, 1 - калі ёсць адзін
дададзена аўтар peterm, крыніца
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

2
дададзена
бліскучы. барабаніць! Хоць я атрымліваю 1 і 0 пераключаныя ў выніку - гэта значыць; Я атрымліваю 0 замест 1 і 1 замест 0
дададзена аўтар user264953, крыніца
@ User264953 Ён робіць менавіта тое, як вы прасілі 0 - калі няма паўтарэння, 1 - калі ёсць адзін
дададзена аўтар peterm, крыніца

For Artist

select convert(bit,(count(1)-1))
from table_name
group by artist  -- <-- Replace artist with column name for which duplicate
2
дададзена
прабачце, мая памылка. На самой справе мне трэба было гэта для SQLite і запыт не працуе SQLite. Акрамя таго, я магу атрымаць «група», «жанр», «пісьменнік» і «вытворца» з дапамогай аднаго запыту?
дададзена аўтар user264953, крыніца
+1 проста таму, што ОП не ведаў, што яго ўласная СКБД.
дададзена аўтар ta.speot.is, крыніца

For Artist

select convert(bit,(count(1)-1))
from table_name
group by artist  -- <-- Replace artist with column name for which duplicate
2
дададзена
прабачце, мая памылка. На самой справе мне трэба было гэта для SQLite і запыт не працуе SQLite. Акрамя таго, я магу атрымаць «група», «жанр», «пісьменнік» і «вытворца» з дапамогай аднаго запыту?
дададзена аўтар user264953, крыніца
+1 проста таму, што ОП не ведаў, што яго ўласная СКБД.
дададзена аўтар ta.speot.is, крыніца

you can use 4 different query with union & each query must contain count(column name) + group by clause

1
дададзена

you can use 4 different query with union & each query must contain count(column name) + group by clause

1
дададзена

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

1
дададзена

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

1
дададзена