2013-03-23 7 views
1

Вот макет таблицы:Извлечение записей из MySQL на основе результатов другой таблицы

Таблица 1: Id - U1 - U2 - Status

Таблица 2 Id - U1 - U2 - Тип - Статус

Мне нужно выбрать все записи в таблице 2, где U1 или U2 соответствуют номерам, найденным в U1 или U2 в таблице 1, с подтвержденным статусом.

Это то, что у меня есть, но оно далеки от эффективности и не упорядочивает записи на основе того, когда они были созданы, и объединяет всю запись, связанную с каждым идентификатором.

$q = "SELECT `U1`, `U2` FROM `Table1` WHERE `U1='{VALUE}' OR `U2`='{VALUE}' AND `Status`='Confirmed'; 

{Value} = предварительное значение, которое у нас есть. После выполнения этого запроса (в то время как цикл через) и определить, какие значения из таблицы 1 делает не сравняться заданное значение (что делает его $ Ур):

$q2 = "SELECT * FROM `Table2` WHERE `U1`='".mysql_real_escape_string($ur)."' OR `U2`='".mysql_real_escape_string($ur)."'"; 
+0

для заказа по дате создания, вы должны иметь поле, содержащее эту дату создания, MySQL иначе не отслеживает эту информацию. Возможно, на Id, если он определен как 'AUTO INCREMENT' ... – didierc

ответ

1

В одном запросе (непроверенный):

SELECT T2.* FROM (
    SELECT U2 AS VALUE FROM Table1 
    WHERE U1 = :value AND STATUS = "Confirmed" 
    UNION 
    SELECT U1 AS VALUE FROM Table1 
    WHERE U2 = :value AND STATUS = "Confirmed" 
) AS T1, Table2 AS T2 
WHERE T2.U1 = T1.VALUE OR T2.U2 = T1.VALUE 
ORDER BY T2.ID 
+0

Ты, мой друг, блестящий! +1 для вас! Благодаря! –

+0

рад помочь! – didierc

0

На основании вашего заявления:

мне нужно для выбора всех записей в таблице 2, где U1 или U2 соответствуют номерам, найденным в U1 или U2 в таблице 1, с подтвержденным статусом.

SELECT T2.* 
FROM Table2 T2 
    JOIN Table1 T1 ON 
     (T2.U1 = T1.U1 OR T2.U1 = T1.U2 OR T2.U2 = T1.U1 OR T2.U2 = T1.U2) 
WHERE T2.Status = 'confirmed' 
+0

Я протестировал это. Не уверен, что это правильные результаты. http://sqlfiddle.com/#!2/5dedc/1/0 – hek2mgl

+0

Как насчет использования следующего запроса: http://sqlfiddle.com/#!2/5dedc/3/0 – hek2mgl

+0

@ hek2mgl - У меня был опечатку, которую я отредактировал - a "-" минус против равных ... – sgeddes

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