Как сделать одинаковый запрос из двух таблиц и подставить новый ID?

Quexx

Новичок
Как сделать одинаковый запрос из двух таблиц и подставить новый ID?

Есть две таблицы (agent, user) у них все столбцы одинаковы. Столбцы id, mydate, summa, phone. Некоторые значения из id совпадают. Нужно сделать одинаковый запрос и в одну таблицу и в другую, чтобы получилась совокупность данных из первой и второй таблицы и для всех данных был новый идентификатор, т.е идентификаторы не совпадали.

Пробовал сделать вот так:
Код:
           "(SELECT mydate,"
         .  " \n id, summa, phone FROM agent WHERE summa LIKE '$temp') UNION ALL"
         .  " \n "(SELECT mydate,"
         .  " \n id, summa, phone FROM agent WHERE summa LIKE '$temp');
Вроде все ничего, но в некоторых полях id совпадают. Что не хватает в моем запросе? или запрос строить нужно по другому?
 

Wicked

Новичок
дайствительно, не очень непонятно, зачем это может быть нужно.

ПС: а что ты подразумеваешь под идентификатором? можно ли считать идентификатором совокупность двух полей? Например, { имя таблицы + оригинальный идентификатор } всегда будут уникальными.
 

Quexx

Новичок
и ЦЕЛЬ этого всего ?
Результат будет помещаться в цикл, где $result это результат запроса
PHP:
    echo "\t<table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\">\n";
    echo "\t<tr>\n";
while ($line = mysql_fetch_array($result)) {
    echo "\t\t<td class=\"cur\">/*тут формируется ссылка*/id=$line[id]</td>\n";/*по этой ссылке делается новый запрос */
    echo "\t\t<td class=\"cur\">$line[mydate]</td>\n";
    echo "\t\t<td class=\"cur\">$line[summa]</td>\n";
    echo "\t\t<td class=\"cur\">$line[phone]</td>\n";
}
    echo "\t</tr>\n";
    echo "\t</table>\n";
При моем запросе некоторые id совпадают, то есть нужно получить как бы данные из двух таблиц, как если бы я получал данные из одной таблицы.

Упсс...тут кое что я понял, то есть то, что по новому ID я не смогу в случае чего найти ту или иную запись в таблице?
 

Wicked

Новичок
Quexx
есть способы взаимооднозначного отображения id этих двух таблиц на множество целых чисел.
Например, так:
новый ид для user равен id * 2,
новый ид для agent равен id * 2 + 1. Но это лишний геморрой :)

а если использовать в качестве ключа 2 поля (id и table_name)
Код:
  "(SELECT mydate, id, 'user' as table_name, summa, phone FROM user WHERE summa LIKE '$temp')"
.  " UNION ALL"
.  " (SELECT mydate, id, 'agent' as table_name, summa, phone FROM agent WHERE summa LIKE '$temp');
то ты будешь знать ID и имя таблицы, из которой этот ID.
 
Сверху