Есть три таблицы {reg_code}, {users} и {uc_addresses} все имеют пересечение по uid.
Хочу сделать выборку из всех трех таблиц одним запросом, а точнее добавить выборку из третьей таблицы {uc_addresses} вот к этому рабочему запросу:
<?php
$sql = 'SELECT u.uid, u.name, u.mail, r.created, r.referer
FROM {reg_code} r INNER JOIN {users} u USING(uid)
WHERE r.reg_uid = %d
AND u.status = 1' . tablesort_sql($header);
$result = pager_query($sql, REFERRAL_PAGE_COUNT, 0, NULL, $uid);
while ($data = db_fetch_object($result)) {
$rows[] = array(
array('data' => $data->name),
array('data' => $data->city), //это поле нужно взять из таблицы {uc_addresses}
array('data' => $data->mail),
array('data' => format_date($data->created, 'custom', REFERRAL_DATE_FORMAT)),
array('data' => $data->referer),
);
}
?>
Важно чтобы результат был с условием выборки данных по списку $uid.
Кроме u.name, u.mail, r.created, r.referer из третьей таблицы мне нужно взять поле city. Пометил комментарием в коде.
Интуитивно понимаю что через INNER JOIN делать надо или что-то подобное, но никак не соображу
Не силен в сложных запросах.
Кто подскажет код запроса?
Комментарии
Можно почитать тут для общего развития
u.uid, u.name, u.mail,
r.created, r.referer,
uc.city
FROM {reg_code} r
INNER JOIN {users} u ON u.uid = r.uid
INNER JOIN {uc_addresses} uc ON uc.uid=u.uid
WHERE ........
- может быть и так. Не забывате что есть еще LEFT JOIN, вдруг в вашей задаче он предпочтительнее, во всяком случае для наглядности я бы советовал поэкспериментировать с запросом в PhpMyAdmin'e, там нагляднее
Благодарю! помогло