Помогите расширить запрос к базе [решено]

Главные вкладки

Аватар пользователя WiseMan WiseMan 20 августа 2009 в 0:20

Есть три таблицы {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($sqlREFERRAL_PAGE_COUNT0NULL$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 делать надо или что-то подобное, но никак не соображу Sad
Не силен в сложных запросах.

Кто подскажет код запроса?

Комментарии

Аватар пользователя kosilko kosilko 20 августа 2009 в 0:53

Можно почитать тут для общего развития

SELECT
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, там нагляднее