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

Форум MySQL

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

 

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

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

тема: Выборка из двух таблиц
 
 автор: SS   (08.03.2009 в 11:37)   письмо автору
 
 

Здравствуйте!
Не могу разобраться, как сделать два запроса к двум разным таблицам, не связанным между собой, одним запросом:

$query = "SELECT * FROM table1 WHERE alt RLIKE '$alt'";

и
$query = "SELECT * FROM table2 WHERE keywords RLIKE '$alt'";

  Ответить  
 
 автор: Slo_Nik   (08.03.2009 в 21:29)   письмо автору
 
   для: SS   (08.03.2009 в 11:37)
 

примерно так

<?php
$query 
"SELECT table1.*,
                                  table2.id AS id,
                                  table2.name AS name
                     FROM table1,table2
                    WHERE table1.id = чему?
                            AND table2.name = чему?"
;
?>

  Ответить  
 
 автор: SS   (09.03.2009 в 10:04)   письмо автору
 
   для: Slo_Nik   (08.03.2009 в 21:29)
 

Ваш вариант не работает: в цикле выводится один и тот же ID. Есть еще какие-то варианты?

  Ответить  
 
 автор: Slo_Nik   (09.03.2009 в 20:51)   письмо автору
 
   для: SS   (09.03.2009 в 10:04)
 

а я и не говорил,что будет работать.
написал как пример составления запроса.
что бы рассмотреть остальные варианты надо видеть базу.
да и в таком варианте у тебя должно работать, но, повторяю, надо видеть базу

  Ответить  
 
 автор: Саня   (09.03.2009 в 10:21)   письмо автору
 
   для: SS   (08.03.2009 в 11:37)
 

<?
$query 
"(SELECT * FROM table1 WHERE alt RLIKE '$alt') 
          UNION
          (SELECT * FROM table2 WHERE keywords RLIKE '
$alt')";

Соответственно количество колонок в таблицах должно быть одинаковым. Либо вместо * перечислить одинаковое количество выбираемых колонок в обоих select'ах.

  Ответить  
 
 автор: SS   (09.03.2009 в 10:35)   письмо автору
 
   для: Саня   (09.03.2009 в 10:21)
 

Нет, количество колонок не одинаковое. В 1-й таблице их ок. 20, во второй - ок. 5. Таблицы не имеют связи между собой ни по ID, ни по каким-либо другим полям: одна таблица содержит описание одних предметов, вторая - других предметов. Надо сделать поиск предметов по ключевым словам в обеих таблицах, и вывести в цикле результат. Вот, если подробно. :)

  Ответить  
 
 автор: Саня   (09.03.2009 в 10:43)   письмо автору
 
   для: SS   (09.03.2009 в 10:35)
 

Значит выбирайте — либо в UNION запросе вместо * перечисляете одинаковое количество выбираемых колонок в обеих таблицах, либо делайте два запроса.

  Ответить  
 
 автор: SS   (09.03.2009 в 19:41)   письмо автору
 
   для: Саня   (09.03.2009 в 10:43)
 

Двумя запросами мне это делать неудобно по той причине, что потом непонятно как делать навигацию по страницам, а одинаковое количество полей перечислять — тоже маразм какой-то... :)

  Ответить  
 
 автор: Саня   (09.03.2009 в 20:27)   письмо автору
 
   для: SS   (09.03.2009 в 19:41)
 

Не вижу сложностей с постраничной навигацией и двумя запросами.
Ещё можете сделать третью таблицу специально для своего случая.

  Ответить  
Rambler's Top100
вверх

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