2013-08-28 8 views
0

Я знаю, что формирование этого запроса тривиально, но я не могу задать точный запрос. Основываясь на том, что я прочитал до сих пор, решение может включать объединение двух таблиц. Вот проблема:выбор записи из таблицы на основе значения столбца другой таблицы

TABLE_ONE {S_NO, DK_NO, FRM , DATE} 

TABLE_TWO {S_NO, DK_NO , TO} 

Я хочу, чтобы выбрать запись из TABLE_ONE на основании входного значения DK_NO и значение проверяемого для TO области TABLE_TWO или FRM области TABLE_ONE

неудачных испытаний до сих пор:

1)

$sql = "select * from TABLE_ONE where DK_NO like '%".$dkno."%' and (FRM='".$department."' or (TABLE_TWO.DK_NO like '%".$dakno."%' and TABLE_TWO.TO='".$department."'))"; 

2)

$sql = "select * from TABLE_ONE where DK_NO like '%".$dkno."%' and (FRM='".$department."' or TABLE_TWO.TO='".$department."')"; 
+2

Поиск СОБЫТИЯ И что они делают – Mihai

+0

Какова связь между двумя таблицами? Является ли 'S_NO' одинаковым значением для обоих? – Sean

+0

no DK_NO из TABLE_TWO является внешним ключом –

ответ

1

Рекомендованное чтение: JOIN.

Использование внутреннего соединения:

"select t1.* 
from table_one t1 inner join table_two t2 on t1.dk_no = t2.dk_no 
where (t1.frm = '". $department. "' or t2.to = '".$department. "') 
    and t1.dk_no like '%" . $dkno . "%'"; 
+0

@AkashGupta, добро пожаловать. Я обновил свой ответ, чтобы отобразить соответствующие столбцы соединения на основе ваших комментариев в вопросе. – vee

1

Вы должны присоединиться к вашей таблицы. Попробуйте что-нибудь наподобие -

SELECT 
    T1.* 
FROM 
    TABLE_ONE T1 
JOIN 
    TABLE_TWO T2 
ON 
    T1.DK_NO = T2.DK_NO 
WHERE 
    T1.DK_NO like '%".$dkno."%' 
AND 
    (T1.FRM='".$department."' OR TABLE_TWO.TO='".$department."') 
Смежные вопросы