ОБНОВЛЕНИЕ MySQL с подзапросами и присоединением - PullRequest
0 голосов
/ 21 декабря 2018

Привет, я новичок в подзапросах и поэтому не уверен, правильно ли я поступаю

Я доволен этим

SELECT t2.cons, t1.date, t1.account_no  FROM
(
SELECT date, account_no FROM  tbl_consignment_x3
) t1
INNER JOIN
(
SELECT cons, date, account_no FROM
tbl_volume_analysis 
) t2
ON t2.account_no=t1.account_no AND t2.date=t1.date 

Это дает мне результаты, которые яхочу использовать

Так что я надеялся, что что-то подобное ниже сделает то, что я хочу, но я не могу понять синтаксис правильно, плюс я не уверен, что моя техника совершенно неправильна

UPDATE tbl_margin_all t3 
(
SELECT t2.cons, t1.date, t1.account_no  FROM
(
SELECT date, account_no FROM  tbl_consignment_x3
) t1
INNER JOIN
(
SELECT cons, date, account_no FROM
tbl_volume_analysis 
) t2
ON t2.account_no=t1.account_no AND t2.date=t1.date 
)
SET t3.cons=t2.cons 
WHERE t1.date=t3.date AND t1.account_no=t3.account_no

спасибо

ДОПОЛНЕНИЕ: Сначала я делаю общее количество отправлений на определенную дату из таблицы накладных, которая затем записывается в таблицу томов с указанием даты и счета ... затем из таблицы отправлений, которую я хочу записать вкаждая партия, которая считается, что я сделал.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Обратите внимание на запятую после t3 для синтаксиса

UPDATE tbl_margin_all_4000 t3,
(
    SELECT cons, t1.date, t1.account_no FROM
    (
        SELECT date, account_no, consignment_no FROM tbl_consignment_x3_4000
    ) t1
    INNER JOIN
    (
        SELECT cons, date, account_no FROM
        tbl_volume_analysis_4000 
    ) t2
    ON t2.account_no=t1.account_no AND t2.date=t1.date 
) as src
SET t3.cons=src.cons
WHERE t3.date=src.date AND t3.account_no=src.account_no

, этот запрос занял 4 минуты.Я попробовал двойное соединение, как это было предложено, но это заняло 45 минут.

0 голосов
/ 21 декабря 2018

Вам нужно присоединиться к первому подзапросу - поставьте JOIN после t3.

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

UPDATE tbl_margin_all AS t3
JOIN tbl_consignment_x3 AS t1 ON t1.date = t3.date AND t1.account_no=t3.account_no
JOIN tbl_volume_analysis AS t2 ON t2.account_no=t1.account_no AND t2.date=t1.date 
SET t3.cons = t2.cons

То же самое в запросе SELECT, должно быть:

SELECT t2.cons, t1.date, t1.account_no  
FROM tbl_consignment_x3 AS t1
JOIN tbl_volume_analysis AS t2
ON t2.account_no=t1.account_no AND t2.date=t1.date 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...