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

Форум MySQL

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

 

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

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

тема: Выборка из двух и более таблиц
 
 автор: Skyonex_   (13.09.2006 в 17:24)   письмо автору
 
 

Есть к примеру две таблицы:

table1
----------------------
id | pole1 | pole2 (индексы построены по pole1 и по pole2)

table2
----------------------
id | pole3

в обеих таблицах ID - primary key

Мне нужно получить следующее:

pole1 | pole2 | pole3 order by id DESC

где (pole1=1 И pole2=0) ИЛИ (pole1=0 И pole2=1)

Делаю следующее:


<?
$query
="select t1.pole1,t1.pole2,t2.pole3 ";
$query.="from table1 as t1,table2 as t2 ";
$query.="where t1.id=t2.id and ((t1.pole1=1 and t1.pole2=0) or (t1.pole1=0 and t1.pole2=1)) order by t1.id DESC LIMIT 0,10;
?>


Какой-то страшный запрос вышел :( Можно ли как-то подобные вещи создавать хитрее, особенно важна скорость выполнения.

   
 
 автор: targa   (13.09.2006 в 17:59)   письмо автору
 
   для: Skyonex_   (13.09.2006 в 17:24)
 

Попробуйте так

SELECT pole1, pole2, pole3 
FROM table1 
JOIN table2 ON table1.id=table2.id 
WHERE pole1+pole2 = 1
ORDER BY table1.id DESC LIMIT 0,10

   
 
 автор: Trianon   (13.09.2006 в 23:18)   письмо автору
 
   для: targa   (13.09.2006 в 17:59)
 


WHERE pole1+pole2 = 1 AND pole1 * pole2 =  0

   
 
 автор: Skyonex_   (14.09.2006 в 02:45)   письмо автору
 
   для: Trianon   (13.09.2006 в 23:18)
 

Всем спасибо. Применил.

   
Rambler's Top100
вверх

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