2011-01-31 5 views
1

столМожно ли это сделать в одном запросе?

id (primary) 
key1,key2,key3 (secondary) 

данный идентификатор N

запрос # 1

select key1,key2,key3 from table where id=N -- key1n,key2n,key3n 

запрос # 2

select * from table where key1 = key1n and key2 = key2n -- results... 
+0

Не ясно, на что вы после этого ... просьба уточнить – jschorr

+1

Ваш вопрос довольно неясно. Возможно, вы могли бы объяснить, почему «SELECT * FROM mytable WHERE id = N' недостаточно. – dnagirl

+0

@dnagirl: Я считаю, что @op хочет, чтобы все записи делили значения 'key1, key2, key3' с записью' N'. – Quassnoi

ответ

6
SELECT t2.* 
FROM table t1 
JOIN table t2 
ON  t2.key1 = t1.key1 
     AND t2.key2 = t1.key2 
     AND t2.key3 = t1.key3 
WHERE t1.id = '$N' 
+1

Поскольку id является первичным ключом, результат не будет таким же, как 'select * from table, где id = N'? Вероятно, я пропустил что-то очевидное. Я полагаю, что одно отличие было бы, если бы любое из значений keyn было null. –

+0

@Mark: мой запрос возвращает все записи, разделяющие значения 'key1, key2, key3' с записью' N', в то время как ваш запрос возвращает только запись 'N'. – Quassnoi

+0

Концептуально то, что вы говорите, имеет смысл, но я не вижу разницы. Возможно, мой мозг отключился в минувшие выходные и еще не запущен. Мне просто нужно настроить некоторые данные и сыграть с ними, когда у меня появится шанс. Благодарю. –

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