2013-09-24 2 views
0

Я хотел бы выбрать и получить результаты из двух отдельных таблиц базы данных, а затем объединить их в одну таблицу html. Я мог бы выполнять команды и называть их отдельно, объединять результаты и прокручивать их. Есть ли способ сделать это с одним запросом?Объедините 2 запроса из разных таблиц с разными именами полей

Пример ниже не будет работать, но это логика того, что я хотел бы достичь.

$SQL = "SELECT * FROM table3 WHERE column5 = 'YES'"; 
$Data = mysql_query($SQL); 

$SQL = "SELECT * FROM table1 WHERE column1 = 'YES'"; 
$Data = mysql_query($SQL); 

// loops through records displaying in table format 
for($Loop = 0; $Loop < mysql_num_rows($Data); $Loop++) 
{ 
    $Row = mysql_fetch_assoc($Data); 
    $Ref = $Row["Ref"]; 
    // rest of fields 
} 

Примечание: Я знаю, что MySQL является устаревшим. Я перейду к pdo, когда я перестрою сайт, но на данный момент мне нужно использовать функцию mysql.

+0

У обеих таблиц одинаковое количество столбцов? – Mihai

+0

Каковы поля в ваших таблицах? – Maximus2012

+0

Обе таблицы имеют различное количество столбцов и названий столбцов –

ответ

0
SELECT * FROM table3 
JOIN table1 ON table3.column5=table1.column1 AND table3.column5='YES' 

Или изменить его Mysqli и использовать http://docs.php.net/mysqli.multi-query

+0

mihai, работает ли конкатенация с переменными ресурсного типа в PHP ??? По моим сведениям, он работает со значениями типа string, int, real type. Просьба уточнить ... –

+0

@RajeshPaul Наверное, нет, это был просто мозговой пердит. – Mihai

0

Вы могли бы использовать UNION в запросе SQL, если обе таблицы были изменились нет. из attributes-

(SELECT * FROM table3 WHERE column5 = 'YES') 
UNION 
(SELECT * FROM table1 WHERE column1 = 'YES') 

Так что используйте следующий код snippet-

$SQL = "(SELECT * FROM table3 WHERE column5 = 'YES') UNION (SELECT * FROM table1 WHERE column1 = 'YES')"; 
$Data = mysql_query($SQL); 

// loops through records displaying in table format 
for($Loop = 0; $Loop < mysql_num_rows($Data); $Loop++) 
{ 
    $Row = mysql_fetch_assoc($Data); 
    $Ref = $Row["Ref"]; 
    // rest of fields 
} 

В этом случае должна быть атрибутом Ref в 1-й таблице, указанной в запросе UNION т.е. table3 здесь.

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