запрос mysql выбирает * значения из 2 таблиц и возвращает имя таблицы, в которой существует результат?

Я пытаюсь составить запрос MySQL, который будет искать 2 таблицы, table1 и table2, и выбирать все результаты, которым менее 30 дней, в любой таблице.

мои таблицы:

table1

id   |   user_id   |    name     |     age    |    date    |


table2

id   |   user_id   |    name     |     age    |    date    |     account     |     sortcode    |

Я повторяю результаты так:

    <?php require_once 'config.php'; ?>

<?php
$table1 = 'supplier_bank_details';
$table2 = 'supplier_invoices';

$query = "SELECT *, $table1 as TABLE from $table1 where 
date > NOW() - INTERVAL 30 DAY and user_id = '{$_SESSION['id']}' ORDER BY date DESC
UNION
SELECT *, $table2 as TABLE from $table2 where
date > NOW() - INTERVAL 30 DAY and user_id = '{$_SESSION['id']}' ORDER BY date DESC";
$result = mysql_query($query) or die( mysql_error() );
while($row = mysql_num_fields($result)){


if($result === $table1) {

echo 'this result is from table1';
echo $row['name'];
echo $row['age'];

}else{

if($result === $table2) {

echo 'this result is from table2';
echo $row['name'];
echo $row['age'];


} } }
?>

поэтому в основном я пытаюсь ввести условие, которое проверяет, из какой таблицы поступают результаты, и эхо-выход «результат из таблицы 1/2» вместе со значениями в этой таблице.

Кто-нибудь знает, как я могу это сделать, поскольку я новичок в запросах MySQL. Заранее спасибо,


person James Daley    schedule 11.02.2015    source источник


Ответы (1)


Вы должны использовать union для этой цели. Кроме того, вы можете жестко закодировать значение таблицы ($table1 или $table2) с самим набором результатов.

Select id, user_id, name, age, date, TABLE
from
(
    SELECT id, user_id, name, age, date, $table1 as TABLE from $table1 where 
    date > NOW() - INTERVAL 30 DAY and user_id = '{$_SESSION['id']}' 
    UNION
    SELECT id, user_id, name, age, date, $table2 as TABLE from $table2 where
    date > NOW() - INTERVAL 30 DAY and user_id = '{$_SESSION['id']}' 
)
ORDER BY date DESC
person Sridhar DD    schedule 11.02.2015
comment
спасибо за это, на что будут похожи мои операторы php if? потому что if(MySQL_table_name = 'table1') { в данный момент выдает ошибку suntax, что мне следует использовать вместо этого? спасибо - person James Daley; 11.02.2015
comment
Проверить и удалить Удалить строку mysql_table_name из файла disable_functions в php.ini* - person Sridhar DD; 11.02.2015