|
|
|
|
|
для: Владимир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
|
| |
|
|
|
|
|
|
|
для: 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 строк. Реально примерно половина. | |
|
|
|
|
|
|
|
для: Владимир55
(20.03.2009 в 19:16)
| | Это алиасы..сокращения имен таблиц..чтобы не запутаться при выборка где много разных полей из разных таблиц... | |
|
|
|
|
|
|
|
для: Владимир55
(20.03.2009 в 19:16)
| | rv это rating_vse
rs это rating_seg
А если просто select выполнить? | |
|
|
|
|
|
|
|
для: Root
(19.03.2009 в 22:07)
| | Как эта конструкция должна работать, я понять не сумел (что есть rv, rs), но при практической проверке скрипт уходит в таймаут даже при лимите времени 300 секунд... | |
|
|
|
|
|
|
|
для: Владимир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. | |
|
|
|
|
|
|
|
для: Root
(19.03.2009 в 17:30)
| | Да, именно по этому параметру. | |
|
|
|
|
|
|
|
для: Владимир55
(19.03.2009 в 16:05)
| | >Дело упрощается тем, что все значения str из таблицы rating_seg присутствуют в таблице rating_vse.
Непонятно..
Вы хотите объединить таблицы по str? | |
|
|
|
|
|
|
| Есть две таблицы 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.
Можно ли это осуществить одним запросом без организации цикла? | |
|
|
|
|