2013-07-08 2 views
1

Я пытаюсь найти несколько столбцов соответствие значение 1Multiple поиска колонки для той же стоимости

columns: 1S, 2S, 3S, 4S 

База данных выглядит следующим образом

aa, 0, 0, 1, 0 
ab, 1, 0, 1, 0 
ac, 1, 0, 0, 0 
ad, 1, 1, 1, 0 

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

1, 1, 1, 0 

Колонны 1S, 2S и 3S являются 1, потому что есть строка со значением 1. 4S равно 0, потому что нет строки со значением 1.

я пытался это, но я получаю сообщение об ошибке MySQL # 1242 - подзапрос возвращает более 1 ряд

SELECT * FROM `show` AS s 
JOIN (`make` AS v, zip AS p) 
ON (s.make = v.id AND s.zip = p.zip) 
WHERE (
SELECT CONCAT_WS(' AND ', CONCAT(column_name, ' = 1 ')) 
          FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'show' 
          AND table_schema = 'DB_NAME' 
          AND column_name NOT IN ('id') 

          ) 
+0

См. Нормализацию – Strawberry

ответ

2

Хорошо, что об этом:

SELECT 
    IF(SUM(1S) > 0, 1, 0), 
    IF(SUM(2S) > 0, 1, 0), 
    IF(SUM(3S) > 0, 1, 0), 
    IF(SUM(4S) > 0, 1, 0) 
FROM `show` 
+0

cool! спасибо @ FSou1 –

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