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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как скомпиллировать из двух таблиц третью?

Сообщения:  [1-9] 

 
 автор: serjinio   (22.03.2009 в 15:07)   письмо автору
 
   для: Владимир55   (20.03.2009 в 20:59)
 

FROM rating_vse AS rating_vse
LEFT JOIN rating_seg AS rating_seg
вот для этого и надо...
 FROM rating_vse AS r_v
 LEFT JOIN rating_seg AS r_s

  Ответить  
 
 автор: Владимир55   (20.03.2009 в 20:59)   письмо автору
 
   для: serjinio   (20.03.2009 в 19:48)
 

То есть, в канонической форме, без псевдонимов, код может выглядеть так:
$query = "INSERT INTO rating_displ
  (str, pos_vse, prod_vse, pos_seg, prod_seg)
SELECT
  rating_vse.str,
  rating_vse.pos AS pos_vse,
  rating_vse.prod AS prod_vse,
  rating_seg.pos AS pos_seg,
  rating_seg.prod AS prod_seg
  FROM rating_vse AS rating_vse
  LEFT JOIN rating_seg AS rating_seg
  ON rating_vse.str = rating_seg.str ";
    mysql_query($query);
   echo mysql_errno()." 603  : ".mysql_error()."<BR>";


Верно?

Если выполнить только SELECT, то и в этом случае времени не хватает.

Номинальный объем таблицы 75000 строк. Реально примерно половина.

  Ответить  
 
 автор: serjinio   (20.03.2009 в 19:48)   письмо автору
 
   для: Владимир55   (20.03.2009 в 19:16)
 

Это алиасы..сокращения имен таблиц..чтобы не запутаться при выборка где много разных полей из разных таблиц...

  Ответить  
 
 автор: Root   (20.03.2009 в 19:42)   письмо автору
 
   для: Владимир55   (20.03.2009 в 19:16)
 

rv это rating_vse
rs это rating_seg

А если просто select выполнить?

  Ответить  
 
 автор: Владимир55   (20.03.2009 в 19:16)   письмо автору
 
   для: Root   (19.03.2009 в 22:07)
 

Как эта конструкция должна работать, я понять не сумел (что есть rv, rs), но при практической проверке скрипт уходит в таймаут даже при лимите времени 300 секунд...

  Ответить  
 
 автор: Root   (19.03.2009 в 22:07)   письмо автору
 
   для: Владимир55   (19.03.2009 в 20:18)
 

INSERT INTO rating_displ
  (str, pos_vse, prod_vse, pos_seg, prod_seg)
SELECT
  rv.str,
  rv.pos AS pos_vse,
  rv.prod AS prod_vse,
  rs.pos AS pos_seg,
  rs.prod AS prod_seg
  FROM rating_vse AS rv
  JOIN rating_seg AS rs
  ON rv.str = rs.str
;


Если же нужны все, даже те, значения из таблицы rating_vse для которых нет соответствующего str в таблице rating_seg поставьте LEFT перед JOIN.

  Ответить  
 
 автор: Владимир55   (19.03.2009 в 20:18)   письмо автору
 
   для: Root   (19.03.2009 в 17:30)
 

Да, именно по этому параметру.

  Ответить  
 
 автор: Root   (19.03.2009 в 17:30)   письмо автору
 
   для: Владимир55   (19.03.2009 в 16:05)
 

>Дело упрощается тем, что все значения str из таблицы rating_seg присутствуют в таблице rating_vse.

Непонятно..

Вы хотите объединить таблицы по str?

  Ответить  
 
 автор: Владимир55   (19.03.2009 в 16:05)   письмо автору
 
 

Есть две таблицы rating_seg и rating_vse, содержащие одинаковые поля id, str, pos, prod.

Из этих двух таблиц необходимо создать третью таблицу rating_displ с полями str, pos_seg, prod_seg, pos_vse, prod_vse. При этом значения str, pos_vse, prod_vse берется из таблицы rating_vse, а значеия pos_seg, prod_seg берутся из таблицы rating_seg.

Дело упрощается тем, что все значения str из таблицы rating_seg присутствуют в таблице rating_vse.

Можно ли это осуществить одним запросом без организации цикла?

  Ответить  

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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