Спустя 20 минут, 23 секунды (14.06.2007 - 10:33) Ghost написал(а):
что значит "несоответствие таблиц"?
Спустя 59 минут, 3 секунды (14.06.2007 - 11:32) кекс написал(а):
Цитата(Ghost @ 14.6.2007, 11:33) [snapback]22676[/snapback]
что значит "несоответствие таблиц"?
нда.. в смысле несоответствие данных в таблицах..
| id | name | street | phone | chto-to |
| 1 | name 1 | street 1 | phone 1 | chto-to 1 |
| 2 | name 2 | street 2 | phone 2 | chto-to 2 |
| 3 | name 3 | street 3 | phone 3 | chto-to 3 |
| 4 | name 4 | street 4 | phone 4 | chto-to 4 |
| 5 | name 5 | street 5 | phone 5 | chto-to 5 |
| 6 | name 6 | street 6 | phone 6 | chto-to 6 |
| 7 | name 7 | street 7 | phone 7 | chto-to 7 |
| id | name | street | phone | chto-to |
| 1 | name 1 | street 1 | phone 1 | chto-to 1 |
| 2 | name 2 | street 2 | phone 2 | chto-to 2 |
| 3 | name 4 | street 4 | phone 4 | chto-to 4 |
| 4 | name 5 | street 5 | phone 535 | chto-to 5 |
| 5 | name 6 | street 6 | phone 6 | chto-to 6 |
| 6 | name 7 | street 7 | phone 7 | chto-to 7 |
вот пример таблиц...
Спустя 18 минут, 52 секунды (14.06.2007 - 11:51) Ghost написал(а):
можешь попробовать что-нить вроде этого
select count(id) as co from
(select * from tab1
union
select * from tab2) as tmp
group by id
having co=1 or MIN(`name`)<>MAX(`name`) or MIN(`street`)<>MAX(`street`) or ....
PS: оптимизация в даном запросе отсутствует впринцыпе
select count(id) as co from
(select * from tab1
union
select * from tab2) as tmp
group by id
having co=1 or MIN(`name`)<>MAX(`name`) or MIN(`street`)<>MAX(`street`) or ....
PS: оптимизация в даном запросе отсутствует впринцыпе
Спустя 1 час, 8 минут, 11 секунд (14.06.2007 - 12:59) кекс написал(а):
Цитата(Ghost @ 14.6.2007, 12:51) [snapback]22685[/snapback]
можешь попробовать что-нить вроде этого
select count(id) as co from
(select * from tab1
union
select * from tab2) as tmp
group by id
having co=1 or MIN(`name`)<>MAX(`name`) or MIN(`street`)<>MAX(`street`) or ....
PS: оптимизация в даном запросе отсутствует впринцыпе
select count(id) as co from
(select * from tab1
union
select * from tab2) as tmp
group by id
having co=1 or MIN(`name`)<>MAX(`name`) or MIN(`street`)<>MAX(`street`) or ....
PS: оптимизация в даном запросе отсутствует впринцыпе
вобщем тут не все так просто..
попробую более точно описать.
Код
CREATE TABLE `CFC_1181748791` (
`id` int(11) NOT NULL auto_increment,
`Complex` text NOT NULL,
`Section` text NOT NULL,
`apNo` text NOT NULL,
`Rooms` text NOT NULL,
`Floor` text NOT NULL,
`Area` text NOT NULL,
`Totalarea` text NOT NULL,
`PriceEURO` text NOT NULL,
`Description` text NOT NULL,
`View` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=143;
--
-- Дамп данных таблицы `CFC_1181748791`
--
INSERT INTO `CFC_1181748791` VALUES (1, 'Complex', 'Section', 'ap.No', 'Rooms', 'Floor', 'Area', 'Total area', 'Price EURO', 'Description', 'View');
INSERT INTO `CFC_1181748791` VALUES (2, 'Crown Fort Club', 'A-1', '1', '2', '0', '60.98', '0', '81652.22', 'living room,kitchen box,WC/bathroom,bedroom,hall,terrace', 'sea/garden');
INSERT INTO `CFC_1181748791` VALUES (3, 'Crown Fort Club', 'A-1', '9', '2', '2', '65.230000000000000000', '5', '87342.97', 'living room,kitchen box,WC/bathroom,bedroom,hall,terrace', 'sea/garden');
INSERT INTO `CFC_1181748791` VALUES (4, 'Crown Fort Club', 'A-1', '19', '3', '6', '86.81', '5', '129650.74', '', 'sea');
INSERT INTO `CFC_1181748791` VALUES (5, 'Crown Fort Club', 'A-2', '24', '3', '1', '64.05', '75.56', '85762.95', 'kitchen box,WC/bathroom,2 bedrooms,hall,2 terraces', 'sea/garden');
INSERT INTO `CFC_1181748791` VALUES (6, 'Crown Fort Club', 'A-2', '27', '2', '2', '64.05', '75.56', '85762.95', 'living room,kitchen box,WC/bathroom,bedroom,hall,terrace', 'sea/garden');
`id` int(11) NOT NULL auto_increment,
`Complex` text NOT NULL,
`Section` text NOT NULL,
`apNo` text NOT NULL,
`Rooms` text NOT NULL,
`Floor` text NOT NULL,
`Area` text NOT NULL,
`Totalarea` text NOT NULL,
`PriceEURO` text NOT NULL,
`Description` text NOT NULL,
`View` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=143;
--
-- Дамп данных таблицы `CFC_1181748791`
--
INSERT INTO `CFC_1181748791` VALUES (1, 'Complex', 'Section', 'ap.No', 'Rooms', 'Floor', 'Area', 'Total area', 'Price EURO', 'Description', 'View');
INSERT INTO `CFC_1181748791` VALUES (2, 'Crown Fort Club', 'A-1', '1', '2', '0', '60.98', '0', '81652.22', 'living room,kitchen box,WC/bathroom,bedroom,hall,terrace', 'sea/garden');
INSERT INTO `CFC_1181748791` VALUES (3, 'Crown Fort Club', 'A-1', '9', '2', '2', '65.230000000000000000', '5', '87342.97', 'living room,kitchen box,WC/bathroom,bedroom,hall,terrace', 'sea/garden');
INSERT INTO `CFC_1181748791` VALUES (4, 'Crown Fort Club', 'A-1', '19', '3', '6', '86.81', '5', '129650.74', '', 'sea');
INSERT INTO `CFC_1181748791` VALUES (5, 'Crown Fort Club', 'A-2', '24', '3', '1', '64.05', '75.56', '85762.95', 'kitchen box,WC/bathroom,2 bedrooms,hall,2 terraces', 'sea/garden');
INSERT INTO `CFC_1181748791` VALUES (6, 'Crown Fort Club', 'A-2', '27', '2', '2', '64.05', '75.56', '85762.95', 'living room,kitchen box,WC/bathroom,bedroom,hall,terrace', 'sea/garden');
вот пример таблицы..
дело в том что эта таблица создается при экспорте файла excel в MySQL
поэтому поля там могут быть совершенно разные..
но первая таблица и вторая которую нужно сравнить... по полям одинаковы.. так как этот excel файл присылают с изменениями.. и там может нехватать строки.. или какие-то цифры поменяны в столбце...
вот хотелось бы найти эти измененые цифры и недостающие строки..
Спустя 5 минут, 11 секунд (14.06.2007 - 13:05) Ghost написал(а):
если поле ид будет везде, то имена остальных полей можно вытянуть, и формировать запрос динамически,
если ид не будет где-нить, то нет
если ид не будет где-нить, то нет
Спустя 15 минут, 40 секунд (14.06.2007 - 13:20) кекс написал(а):
Цитата(Ghost @ 14.6.2007, 14:05) [snapback]22695[/snapback]
если поле ид будет везде, то имена остальных полей можно вытянуть, и формировать запрос динамически,
если ид не будет где-нить, то нет
если ид не будет где-нить, то нет
поле id будет везде.. но при экспорте второго файла с изменениями может быть убрана одна строка.. и в таблице id сместятся на одну цифру
тоесть смысла-то особого в этих id как бы и нет... или всетаки есть?
Спустя 32 минуты, 11 секунд (14.06.2007 - 13:52) Ghost написал(а):
если по ним задается соответствие, то имеет,
если ид просто так для понту, то запрос вообще никакого смысла не имеет
если ид просто так для понту, то запрос вообще никакого смысла не имеет
Спустя 9 минут, 25 секунд (14.06.2007 - 14:02) кекс написал(а):
Цитата(Ghost @ 14.6.2007, 14:52) [snapback]22710[/snapback]
если по ним задается соответствие, то имеет,
если ид просто так для понту, то запрос вообще никакого смысла не имеет
если ид просто так для понту, то запрос вообще никакого смысла не имеет
я понял что все кто смотрит так и не понимают что я спрашиваю.. видно плохой с меня составитель вопросов..
попробую иначе..
можно ли средствами MySQL сравнить строки из одной таблицы со строками другой таблицы.. и если строка индентична, то ее не выводим.. а если в ней что-то не так, или хуже того ее вобще нет.. то показываем что вот так мол и так строка такая отсутствует.. или наоборот такая строка лишняя в той таблице ее нет... ID забыть.. нету их и ненадо.. просто сравниваем строки..
Спустя 52 минуты, 21 секунда (14.06.2007 - 14:54) Ghost написал(а):
ок, тогда можно так
select str, count(*) as co from
(select сюда пихаем конкат всех полей через разделитель какой-нибудь AS str from tab1
union
select аналогично AS str2 from tab2) as tmp
group by str
having co=1
select str, count(*) as co from
(select сюда пихаем конкат всех полей через разделитель какой-нибудь AS str from tab1
union
select аналогично AS str2 from tab2) as tmp
group by str
having co=1
Спустя 8 минут, 3 секунды (14.06.2007 - 15:02) zaxar написал(а):
Запрос
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL
выведет записи из table1, которых нет в table2
Единственный минус — проверка несоответствия в данном запросе идет только по полю id (table1.id=table2.id WHERE table2.id
Как сделать проверку сразу по всем полям — не знаю. Либо углубляться в JOIN-запросы, либо посылать эти запросы по очереди, меняя название поля. Не могу помочь.
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL
выведет записи из table1, которых нет в table2
Единственный минус — проверка несоответствия в данном запросе идет только по полю id (table1.id=table2.id WHERE table2.id
Как сделать проверку сразу по всем полям — не знаю. Либо углубляться в JOIN-запросы, либо посылать эти запросы по очереди, меняя название поля. Не могу помочь.
Спустя 2 часа, 30 минут, 30 секунд (14.06.2007 - 17:33) кекс написал(а):
Ghost спасибо. сработала такая схема.. сейчас ее проверю в обе стороны...
SELECT str, count(*) as co FROM
(select CONCAT(Complex) AS str FROM $t1
union
SELECT CONCAT(Complex) AS str2 FROM $t2) AS tmp
group by str
having co=1
но все равно мне кажется это не то.. потому как мне нужно сравнить построчно.. тоесть беру первую строку из второй таблицы, сверяю ее с первой таблицей и так далее если строка совпадает ничего.. если строка не совпадает.. выводим... счас проверю.. я в MySQL не особо силен.. а точнее вобще не силен... так поверхностные знания..
zaxar
не.. это сразу видно что не прокатит... тут ID... а если одной строки не хватает, то ID смещается и все что после удаленной строки не прокатывает..
SELECT str, count(*) as co FROM
(select CONCAT(Complex) AS str FROM $t1
union
SELECT CONCAT(Complex) AS str2 FROM $t2) AS tmp
group by str
having co=1
но все равно мне кажется это не то.. потому как мне нужно сравнить построчно.. тоесть беру первую строку из второй таблицы, сверяю ее с первой таблицей и так далее если строка совпадает ничего.. если строка не совпадает.. выводим... счас проверю.. я в MySQL не особо силен.. а точнее вобще не силен... так поверхностные знания..
zaxar
не.. это сразу видно что не прокатит... тут ID... а если одной строки не хватает, то ID смещается и все что после удаленной строки не прокатывает..
Спустя 17 минут, 48 секунд (14.06.2007 - 17:51) Ghost написал(а):
что такое в товоем случае complex?
имелось ввиду нечто вроде name, '!!!', street, '!!!', phone, '!!!', chto-to 1, '!!!'
где '!!!' - спец разделитель, чтоб столбцы не накладывались
напр
22, 3 и
2, 23
имелось ввиду нечто вроде name, '!!!', street, '!!!', phone, '!!!', chto-to 1, '!!!'
где '!!!' - спец разделитель, чтоб столбцы не накладывались
напр
22, 3 и
2, 23
Спустя 40 минут, 25 секунд (14.06.2007 - 18:31) кекс написал(а):
Ghost , точно.. чет я уже глаз замылил до такой степени.. сейчас попробую..
Спустя 4 минуты, 11 секунд (14.06.2007 - 18:35) кекс написал(а):
SELECT str, count(*) as co FROM
(select CONCAT(`Complex`, `Section`, `apNo`, `Rooms`, `Floor`, `Area`, `Totalarea`, `PriceEURO`, `Description`, `View`) AS str FROM $tab1
union
SELECT CONCAT(`Complex`, `Section`, `apNo`, `Rooms`, `Floor`, `Area`, `Totalarea`, `PriceEURO`, `Description`, `View`) AS str2 FROM $tab2) AS tmp
group by str
having co=1
") or die(mysql_error()); //
while ($row = mysql_fetch_array ($res)) {
echo $row["str"]."<br>";
}
`Complex`, `Section`, `apNo`, `Rooms`, `Floor`, `Area`, `Totalarea`, `PriceEURO`, `Description`, `View`
это поля таблицы
(select CONCAT(`Complex`, `Section`, `apNo`, `Rooms`, `Floor`, `Area`, `Totalarea`, `PriceEURO`, `Description`, `View`) AS str FROM $tab1
union
SELECT CONCAT(`Complex`, `Section`, `apNo`, `Rooms`, `Floor`, `Area`, `Totalarea`, `PriceEURO`, `Description`, `View`) AS str2 FROM $tab2) AS tmp
group by str
having co=1
") or die(mysql_error()); //
while ($row = mysql_fetch_array ($res)) {
echo $row["str"]."<br>";
}
`Complex`, `Section`, `apNo`, `Rooms`, `Floor`, `Area`, `Totalarea`, `PriceEURO`, `Description`, `View`
это поля таблицы
Спустя 45 секунд (14.06.2007 - 18:36) кекс написал(а):
выводит все строки..
Спустя 2 минуты, 47 секунд (14.06.2007 - 18:39) Ghost написал(а):
AS str2 лишнее
или поставить AS str, не помню точно
или поставить AS str, не помню точно
Спустя 10 минут, 13 секунд (14.06.2007 - 18:49) Ghost написал(а):
а, не, ни в этом трабла,
UNION ALL
мануал рулит
UNION ALL
мануал рулит
Спустя 17 секунд (14.06.2007 - 18:49) кекс написал(а):
решил по другому сделать... считать файл построчно в базу и сравнивать один столбец.. так проще
SELECT tab1.txt
FROM tab1
LEFT JOIN tab2
ON tab1.txt = tab2.txt
WHERE tab2.txt IS NULL
и второй запрос зеркальный
SELECT tab2.txt
FROM tab2
LEFT JOIN tab1
ON tab2.txt = tab1.txt
WHERE tab1.txt IS NULL
во всяком случае по вставлению руками в базу все работает.. без ID и всего такого.. сейчас найду какой-нить скрипт который считает построчно.. и пишет в базу.. сам я excel фиг разберу
все равно спасибо за помощь
SELECT tab1.txt
FROM tab1
LEFT JOIN tab2
ON tab1.txt = tab2.txt
WHERE tab2.txt IS NULL
и второй запрос зеркальный
SELECT tab2.txt
FROM tab2
LEFT JOIN tab1
ON tab2.txt = tab1.txt
WHERE tab1.txt IS NULL
во всяком случае по вставлению руками в базу все работает.. без ID и всего такого.. сейчас найду какой-нить скрипт который считает построчно.. и пишет в базу.. сам я excel фиг разберу
все равно спасибо за помощь
Спустя 4 минуты, 21 секунда (14.06.2007 - 18:54) Ghost написал(а):
попробуй поставить all
спецом пришлось сделать таблицу, но все отработало чисто
спецом пришлось сделать таблицу, но все отработало чисто
Спустя 1 минута, 59 секунд (14.06.2007 - 18:56) кекс написал(а):
UNION ALL выдает похожее что-то на правду.. только в куче все получается как-то.... а в предыдущем видно в какой таблице что не соответствует.. да и id все равно придется прикручивать, так как номер строки видно будет что бы долго не искать...
а в твоем примере попробовать надо ай ди-то.. хе.. получается.. ну сейчас попробую с новым файлом где еще никаких изменений не делал.. жаль что только все сплошняком выводит... хоть бы пробелы как сделать
а в твоем примере попробовать надо ай ди-то.. хе.. получается.. ну сейчас попробую с новым файлом где еще никаких изменений не делал.. жаль что только все сплошняком выводит... хоть бы пробелы как сделать
Спустя 2 минуты, 29 секунд (14.06.2007 - 18:58) Ghost написал(а):
explode
только разделитель выбрать надо такой чтоб в полях небыло, напр не !!!, а <!$!>
а ид туда добавить уж совсем просто
сам давай)
а задачка красивая
только разделитель выбрать надо такой чтоб в полях небыло, напр не !!!, а <!$!>
а ид туда добавить уж совсем просто
сам давай)
а задачка красивая
Спустя 2 минуты, 33 секунды (14.06.2007 - 19:01) кекс написал(а):
да работает и твоя схема спасибо.. только вот блин ячейки не разделяет.. а как в таком запросе их разделить я представления не имею...
Спустя 7 минут, 18 секунд (14.06.2007 - 19:08) кекс написал(а):
или надо при експорте перед каждым полем вписывать что-то что бы потом это сделать в качестве разделителя.. или фик знает..
Спустя 1 минута, 6 секунд (14.06.2007 - 19:09) кекс написал(а):
Цитата(Ghost @ 14.6.2007, 19:58) [snapback]22783[/snapback]
а задачка красивая
в смысле которая? explode ?
Спустя 1 минута, 38 секунд (14.06.2007 - 19:11) Ghost написал(а):
дык блин, есть жеж уже разделитель.
а, ты его не добавил, говорили жеж
CONCAT(`Complex`, '<!$!>',`Section`, '<!$!>', `apNo`, '<!$!>',...)
а потом explode
а, ты его не добавил, говорили жеж
CONCAT(`Complex`, '<!$!>',`Section`, '<!$!>', `apNo`, '<!$!>',...)
а потом explode
Спустя 8 минут, 35 секунд (14.06.2007 - 19:19) кекс написал(а):
может не explode всетаки? а то он в массив загоняет.. а replace ?
Спустя 2 минуты, 38 секунд (14.06.2007 - 19:22) Ghost написал(а):
это уж сам смотри как тебе надо дальше по коду
если че-то менять в базе - имеет смысл разбить в массив
если дак - для информирования - то в качестве разделителя возьми 4 пробела и будет тебе щастье
про id повторюсь - это сделать можно и довольно просто, так что думай сам
а мне ваще давно домой пора
если че-то менять в базе - имеет смысл разбить в массив
если дак - для информирования - то в качестве разделителя возьми 4 пробела и будет тебе щастье
про id повторюсь - это сделать можно и довольно просто, так что думай сам
а мне ваще давно домой пора
Спустя 6 минут (14.06.2007 - 19:28) кекс написал(а):
спасибо ID я сделал.. а дальше ничего не надо с этим иметь.. просто девочка посмотрит увидит в каких строках изменения и исодя из этого сделает что надо.. просто им там сидеть полдня париться искать где изменения..
завтра вкину урл на рабочий фигнюшку.. посмотришь сам как работает
завтра вкину урл на рабочий фигнюшку.. посмотришь сам как работает
Спустя 2 года, 11 месяцев, 9 дней, 1 час, 8 минут, 24 секунды (23.05.2010 - 20:36) IPnex написал(а):
У меня малость другой вопрос. Есть таблица price с прайсом, в ней около 17500 записей.
При загрузке эксель файла из него в новую таблицу price_upd загружается новый прайс из файла.
Собственно вопрос, как сравнить тиблицы price и price_upd так, чтобы если цена у артикула из таблицы price отличается от цены этого же артикула из таблицы price_upd, то цена в таблице price обновлялась на цену из таблицы price_upd
При загрузке эксель файла из него в новую таблицу price_upd загружается новый прайс из файла.
Собственно вопрос, как сравнить тиблицы price и price_upd так, чтобы если цена у артикула из таблицы price отличается от цены этого же артикула из таблицы price_upd, то цена в таблице price обновлялась на цену из таблицы price_upd
Спустя 4 минуты, 36 секунд (23.05.2010 - 20:41) waldicom написал(а):
Т.е. не стоит условие больше-меньше, а просто надо заменять цены?
Тогда можно попросту заменить все цены, потому что если цена разная, то она обновится, а если одинаковые, то ничего не изменится.
Тогда можно попросту заменить все цены, потому что если цена разная, то она обновится, а если одинаковые, то ничего не изменится.
Спустя 8 минут, 25 секунд (23.05.2010 - 20:49) IPnex написал(а):
ну условие только одно, что если цены равны, то ничего не делать. Иначе обновить на новую.
Пробовал так:
Но обновление происходит не до конца, т.е. не вся таблица обновляется. Видимо не хватает аптайма. Как еще можно делать, чтобы шустрее обновлялось?
Пробовал так:
$sql = mysql_query("SELECT * FROM price_upd");
for($i=0; $row=mysql_fetch_array($sql); $i++)
{
$sql2 = mysql_query("UPDATE price SET price='$row[price]' WHERE art='$row[art]' AND price!='$row[price]'");
}
Но обновление происходит не до конца, т.е. не вся таблица обновляется. Видимо не хватает аптайма. Как еще можно делать, чтобы шустрее обновлялось?
Спустя 4 минуты, 31 секунда (23.05.2010 - 20:54) IPnex написал(а):
А можете подсказать пожалуйста как лучше сделать!
Спустя 1 минута, 4 секунды (23.05.2010 - 20:55) waldicom написал(а):
Не, так не надо. Надо в одном запросе.
Типа
articleId - это поле, по которму связываются таблицы.
Типа
UPDATE `price`,`price_upd` SET `price`.`price`= `price_upd`.`price` WHERE `price`.`articleId`= `price_upd`.`articleId`
articleId - это поле, по которму связываются таблицы.
Спустя 6 минут, 38 секунд (23.05.2010 - 21:01) IPnex написал(а):
вобщем попробовал, вроде работает, но очень долго обновляет, секунд 15. А можно как-нибудь ускорить сей процесс?
Спустя 1 минута, 13 секунд (23.05.2010 - 21:03) waldicom написал(а):
Цитата (IPnex @ 23.05.2010 - 20:01) |
вобщем попробовал, вроде работает, но очень долго обновляет, секунд 15. А можно как-нибудь ускорить сей процесс? |
Конечно. Можно расставить правильно индексы, можно брать только те записи, которые отличаются друг от друга...
Если Вы добавите один символ в запрос выше, от он, скорее всего, будет выполняться быстрее.
Спустя 4 минуты, 43 секунды (23.05.2010 - 21:07) IPnex написал(а):
а можно чуть подробнее про индексы, в смысле на какие поля ставить?
А по поводу того, чтобы брать только те записи, которые отличаются, это сложновато, т.к. могут измениться например только 7 цен, а может 7000 цен у товаров.
И про какой символ Вы говорите?
А по поводу того, чтобы брать только те записи, которые отличаются, это сложновато, т.к. могут измениться например только 7 цен, а может 7000 цен у товаров.
И про какой символ Вы говорите?
Спустя 1 час, 43 минуты, 59 секунд (23.05.2010 - 22:51) waldicom написал(а):
Цитата (IPnex @ 23.05.2010 - 20:07) |
а можно чуть подробнее про индексы, в смысле на какие поля ставить? |
Так как мы делаем слияние таблиц по полю articleId, то как минимум на это поле (конечно замените это поле тем, которое используете Вы).
Цитата (IPnex @ 23.05.2010 - 20:07) |
И про какой символ Вы говорите? |
Надо подумать. В смысле Вам надо подумать.
Спустя 4 минуты, 30 секунд (23.05.2010 - 22:56) IPnex написал(а):
попробовал обновить еще пару раз, теперь ничего не происходит. Ждал около минуты и ничего. Мне кажется это из-за большого количества записей
Спустя 1 день, 12 часов, 26 минут, 38 секунд (25.05.2010 - 11:23) IPnex написал(а):
Помогите кто-нибудь пожалуйста! Еще раз повторю задачу:
Есть таблица price с прайсом, в ней около 17500 записей.
При загрузке эксель файла из него в новую таблицу price_upd загружается новый прайс из файла.
Собственно вопрос, как сравнить тиблицы price и price_upd так, чтобы если цена у артикула из таблицы price отличается от цены этого же артикула из таблицы price_upd, то цена в таблице price обновлялась на цену из таблицы price_upd
Есть таблица price с прайсом, в ней около 17500 записей.
При загрузке эксель файла из него в новую таблицу price_upd загружается новый прайс из файла.
Собственно вопрос, как сравнить тиблицы price и price_upd так, чтобы если цена у артикула из таблицы price отличается от цены этого же артикула из таблицы price_upd, то цена в таблице price обновлялась на цену из таблицы price_upd
Спустя 1 день, 43 минуты, 33 секунды (26.05.2010 - 12:06) IPnex написал(а):
Можете тогда ответить на вопрос, как увеличить время, которое отводится на операции с таблицей. В моем случае на обновление. Просто если увеличить это время, то можно будет без проблем обновить тем запросом, который есть сейчас.
Спустя 11 минут, 9 секунд (26.05.2010 - 12:17) Rand написал(а):
с разделителем это CONCAT_WS
P.S: Блин, я некропостер. Забыл страницы полистать ))
Почему нельзя удалять свои сообщения, если они последние в теме?
CONCAT_WS(',' Complex, Section, apNo, Rooms, Floor, Area, Totalarea, PriceEURO, Description, View)
P.S: Блин, я некропостер. Забыл страницы полистать ))
Почему нельзя удалять свои сообщения, если они последние в теме?
Спустя 8 дней, 5 часов, 31 минута, 36 секунд (4.06.2010 - 17:49) Guest написал(а):
Добрый день,
Подскажите с чего начать.
Есть база данный MySQL, в ней например таблица B со столбцами id(ключ),c,d,e,f. В эту базу парсется таблица A со столбцами id(ключ),b,c,d,e,f. Таблица A содержит строки таблицы В, а так же новые строки.
Нужно проверить, если строка из таблицы А, например №9, есть в таблице В то ничего не делаем. Если строки из таблицы А №9 нет в таблице В, ее нужно поместить на первое место таблицы В.
Второй этап. Если строка №3 из таблицы В, есть в таблице А, то ничего не делаем. Если строки №3 из таблицы В нет в таблицы А то из таблицы В ее надо удалить.
Сравнение строк происходит не по ключу id, а по значению ее полей.
Подскажите в какую сторону копать
Начала со сравнения таблиц. Ищем строчку из первой таблицы, который не во второй и выводим ее. Как место вывода строки поместить ее на первое место таблицы
Так не работает, выдает ошибку в первой строке: Parse error: syntax error, unexpected T_STRING
Как исправить?
Подскажите с чего начать.
Есть база данный MySQL, в ней например таблица B со столбцами id(ключ),c,d,e,f. В эту базу парсется таблица A со столбцами id(ключ),b,c,d,e,f. Таблица A содержит строки таблицы В, а так же новые строки.
Нужно проверить, если строка из таблицы А, например №9, есть в таблице В то ничего не делаем. Если строки из таблицы А №9 нет в таблице В, ее нужно поместить на первое место таблицы В.
Второй этап. Если строка №3 из таблицы В, есть в таблице А, то ничего не делаем. Если строки №3 из таблицы В нет в таблицы А то из таблицы В ее надо удалить.
Сравнение строк происходит не по ключу id, а по значению ее полей.
Подскажите в какую сторону копать
Начала со сравнения таблиц. Ищем строчку из первой таблицы, который не во второй и выводим ее. Как место вывода строки поместить ее на первое место таблицы
SELECT str, count(*) AS co FROM
(SELECT CONCAT('ZVPRICE', 'ZEQPRICE', 'ZVTH', 'ZSTAGE', 'ZHSTAGE', 'ZMATERID', 'ZAAREA', 'ZRAREA', 'ZKAREA', 'ZVSTREET', 'ZRAIONID', 'ZWCID', 'ZVBAL', 'ZPHONEID', 'O.ZMISC', 'ZVAGPH', 'ZVAGENT') AS str FROM $rooms
UNION
SELECT CONCAT('ZVPRICE', 'ZEQPRICE', 'ZVTH', 'ZSTAGE', 'ZHSTAGE', 'ZMATERID', 'ZAAREA', 'ZRAREA', 'ZKAREA', 'ZVSTREET', 'ZRAIONID', 'ZWCID', 'ZVBAL', 'ZPHONEID', 'O.ZMISC', 'ZVAGPH', 'ZVAGENT') AS str2 FROM $rooms1) AS tmp
GROUP BY str
HAVING co=1") or die(mysql_error());
while ($row = mysql_fetch_array ($res)) {
echo $row["str"]."<br>";
}
Так не работает, выдает ошибку в первой строке: Parse error: syntax error, unexpected T_STRING
Как исправить?
Спустя 1 час, 54 минуты, 11 секунд (4.06.2010 - 19:43) twin написал(а):
Начать нужно с того, что поместить вопрос в отдельную тему.
С удовольствием помогу, особенно в этом.
Сформулируйте вопрос для названия темы, я перенесу.
С удовольствием помогу, особенно в этом.
Сформулируйте вопрос для названия темы, я перенесу.
Спустя 14 минут, 52 секунды (4.06.2010 - 19:58) Jule4ka написал(а):
Давайте перенесем
Название темы "Синхронизация двух таблиц"
Спасибо за помощь
Название темы "Синхронизация двух таблиц"
Спасибо за помощь
_____________