[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как выполнить поиск по двум таблицам одновременно
gaserge
интересует такой момент, допустим есть две таблицы в одной базе данных.

мне нужно осуществить поиск по одной из них, причем если значение A из таблицы 1 = значению B из таблицы 2.

сейчас сделал так:
 ...

// выбираем таблицу 1
$sql = "SELECT * FROM `table1`";
$sort = mysql_query($sql) or die(mysql_error() .'<br/>'. $sql);


while($sort_result = mysql_fetch_array($sort)) {

// выбираем таблицу 2 и назначаем сортировку
$sql = "SELECT * FROM `table2`
WHERE `id` = '
{$sort_result['id']}'
AND `cat` = '
$cat' $andwhere
ORDER BY `price` DESC";
$select = mysql_query($sql) or die(mysql_error() .'<br/>'. $sql);


while($select_result = mysql_fetch_array($select)) {

...


делов в том что на выходе установленная сортировка ( ORDER BY `price` DESC ) не осуществляется и данные выводятся по id. подскажите как правильно прописать одним запросом. Гуглил, но так и не разобрался как прописать.



Спустя 7 часов, 30 минут, 17 секунд (5.02.2011 - 10:06) sergeiss написал(а):
Я предлагаю автору сначала разобраться, что же он хочет: в заголовке у него "две БД", а в тексте я вижу только "две таблицы". Так таблицы в одной БД или в разных?

Спустя 40 минут, 36 секунд (5.02.2011 - 10:46) gaserge написал(а):
точно описался. имею ввиду не в двух разных базах данных. а из двух разных таблиц.) исправил

Спустя 3 минуты, 30 секунд (5.02.2011 - 10:50) sergeiss написал(а):
В таком случае читай про JOIN - это то, что тебе нужно. Данные из 2-х или более таблиц одной БД можно объединить так, что в каждой строке будут находиться данные, связанные друг с другом по какому-то ключевому полю.

Спустя 23 часа, 59 минут, 9 секунд (6.02.2011 - 10:49) gaserge написал(а):
все спасибо получилось, вот как прописал если кому пригодится еще:

SELECT * FROM `table1` LEFT JOIN `table2` ON `table1`.`id` = `table2`.`id`
WHERE `cat` = '$cat' $andwhere
ORDER BY `price` DESC"



само присоеденение таблицы и сравнивание ячеек идет в этой строке, тут все понятно вроде (LEFT JOIN - указываем присоеденяемую таблицу, ON - прописываем условие):
SELECT * FROM `table1` LEFT JOIN `table2` ON `table1`.`id` = `table2`.`id`
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.