Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Двухтабличный запрос
 
 автор: mehelson   (30.03.2007 в 08:19)   письмо автору
 
 

Здравствуйте всем !

Есть две таблицы: допустим
таблица_1 (id, name, time, email) и таблица_2(id, email)

так вот, нужно выбрать все 'email' из таблицы_2 и все (*) записи из таблицы_1, у которых 'email' совпадает с 'email' из таблицы_2... о как...
че та не соображу...
Хотел в два запроса, потом сравнивать, но как то это не правильно,... как потом сравнивать результаты запросов ?
Подскажите как сформировать один запрос ?
Наверно, что-то типа
"SELECT * FROM таблица_2 WHERE EXISTS (SELECT * FROM таблица_1 WHERE таблица_2.email = таблица_1.email)";

???

Спасибо !

   
 
 автор: bronenos   (30.03.2007 в 09:10)   письмо автору
 
   для: mehelson   (30.03.2007 в 08:19)
 

select t1.*, t2.email from table1 t1, table2 t2 where t1.email=t2.email

   
 
 автор: mehelson   (30.03.2007 в 11:57)   письмо автору
 
   для: bronenos   (30.03.2007 в 09:10)
 

Спасибо !
А как к результату обращаться ?
если...

$query = mysql_query("SELECT tbl_1.*, tbl_2.email FROM tbl_1, tbl_2 WHERE tbl_1.email=tbl_2.email");
if(!$query) exit(mysql_error());

то...

while($res = mysql_fetch_array($query))
{
  echo "<tr><td>".$res['tbl_2.email']."</td>";  
  echo "<td>".$res['tbl_1.field1']." ".$res['tbl_1.field2']." ".$res['tbl_1.field3']."</td></tr>";
}

или как ?

Спасибо!

   
 
 автор: Trianon   (30.03.2007 в 12:00)   письмо автору
 
   для: mehelson   (30.03.2007 в 11:57)
 

<?
$query 
mysql_query("SELECT tbl_1.* FROM tbl_1, tbl_2 WHERE tbl_1.email=tbl_2.email"); 
if(!
$query) exit(mysql_error()); 
 

while(
$res mysql_fetch_assoc($query)) 

  echo 
"<tr><td>".$res['email']."</td>";   
  echo 
"<td>".$res['field1']." ".$res['field2']." ".$res['field3']."</td></tr>"

 

   
 
 автор: mehelson   (30.03.2007 в 12:08)   письмо автору
 
   для: Trianon   (30.03.2007 в 12:00)
 

Спасибо !
но это если email совпали... а если нет...
а мне надо из tbl_2 все записи выбрать, независимо от совпадений...
ну и + к этому записи из tbl_1 если email совпали...

   
 
 автор: Trianon   (30.03.2007 в 12:18)   письмо автору
 
   для: mehelson   (30.03.2007 в 12:08)
 

Если из tbl_2 нужно выбрать всё, этот запрос не годится - нужно будет применять внешнее соединение и псевдонимы столбцов:


SELECT 
   tbl_2.email AS  t2_email, 
   tbl_1.email AS  t1_email, 
   tbl_2.fld1 AS t2_fld1,   
   tbl_1.fld1 AS t1_fld1,
FROM tbl_2 LEFT JOIN tbl_1 on tbl_2.email = tbl_1.email

Обращаться к столбцам нужно будет по псевдонимам.

   
 
 автор: mehelson   (31.03.2007 в 08:43)   письмо автору
 
   для: Trianon   (30.03.2007 в 12:18)
 

Спасибо большое!
Наконец-то разобрался с объединением.
Прекрасно работает запрос-

"SЕLЕСТ * FRОМ tbl_1 RIGHТ JОIN tbl_2 ОN tbl_2.еmаil=tbl_1.еmаil";

т.е. выбираем все записи из tbl_1, соответствующие условию и все записи из tbl_2, включая те, которым не нашлось соответствий в tbl_1...
Спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования