2013-03-01 8 views
0

У меня есть настройки таблицы, как это:Запрос нескольких строк в одной таблице для одной переменной

session_id | event_id | модератор | speaker_1 | speaker_2 | speaker_3 | ... продолжает идти к speaker_10

То, что я пытаюсь сделать, это настроить запрос, который ищет 1 переменной "speakerid = 13245" и проверить строки

«модератор», «speaker_1», «speaker_2», 'speaker_3', 'speaker_4', 'speaker_5', 'speaker_6', 'speaker_7', 'speaker_8', 'speaker_9', 'speaker_10'

Затем вернитесь каждый 'session_id', соответствующий любой строке, содержащей speakerid = 12345 в любой из 11 колонок.

Я знаю, что это имеет какое-то отношение к INNER JOIN, но после многих поисков я не могу найти ничего конкретного. Я уже много лет выполняю stackoverflow, и это мой первый пост.

ответ

0

Я думаю, вам просто нужно использовать LIKE с OR для возврата строки, в которых любое поле содержит «speakerid = 12345»:

SELECT Session_Id 
FROM YourTable 
WHERE Moderator Like '%speakerid = 13245%' 
    OR speaker_1 Like '%speakerid = 13245%' 
    OR ... 
0

Вы должны прочитать о нормализации баз данных, как speaker_n столбцы плохой знак. Вероятно, вам нужна таблица Speakers и таблица сопоставления «Session-Speakers». Это, безусловно, облегчит ваш запрос, но на данный момент у вас нет выбора, кроме как искать все столбцы:

SELECT sesion_id FROM t1 WHERE 
    moderator = '12345' 
    OR speaker_1 = 12345 

и т.д.

0

Это действительно звучит, как вам нужно, чтобы нормализовать эту таблицу и иметь таблицу сессий/события и таблицу динамиков, относящихся к ней, через третью таблицу sesssions_speaker. Таким образом, вам не нужно менять схему таблиц, когда у вас есть событие с 12 + динамиками.

При этом, вы можете запросить так, чтобы получить результат, вам нужно

SELECT session_id 
FROM table 
WHERE 
moderator = ? 
OR speaker_1 = ? 
OR speaker_2 = ? 
... 
OR speaker_11 = ? 
0

Вы можете сделать это с помощью in в пункте where:

select session_id 
from t 
where 13245 in (moderator, speaker_1, speaker_2, speaker_3, speaker_4, 
       speaker_5, speaker_6, speaker_7, speaker_8, speaker_9, 
       speaker_10) 
Смежные вопросы