Я нашел этот вопрос в поиске моего собственного решения для очень сложного соединения. Это альтернативное решение для более сложной версии проблемы, которая, как мне показалось, может быть полезна.
Мне нужно заполнить поле product_id в таблице действий, где действия нумеруются в единице, а единицы нумеруются на уровне (идентифицированном с использованием строки N), так что можно определить действия используя SKU, т.е. L1U1A1. Затем эти SKU хранятся в другой таблице.
Я определил следующее, чтобы получить список activity_id vs product_id: -
SELECT a.activity_id, w.product_id FROM activity a JOIN units USING (unit_id) JOIN product_types ИСПОЛЬЗОВАНИЕ (product_type_id) JOIN web_products w ON sku = CONCAT ('L', SUBSTR (product_type_code, 3), 'U', unit_index, 'A', activity_index)
Я обнаружил, что это был слишком сложным для включения в SELECT в mysql, поэтому я создал временную таблицу и присоединился к ней с помощью инструкции update: -
CREATE TEMPORARY TABLE activity_product_ids AS (& lt; вышеуказанный оператор select & gt; ); Действия UPDATE: JOIN activity_product_ids b ON a.activity_id = b.activity_id SET a.product_id = b.product_id;
Я надеюсь, что кто-то найдет это полезное
Эта часть вашего оператора компиляции:
gfortran Codigo.f
будет обрабатывать исходный файл с суффиксом .f
в качестве источника фиксированной формы. Это означает, что строка продолжения указывается любым символом (отличным от пустого или 0
) в столбце 6.
Однако сообщение об ошибке, которое вы получаете, предполагает, что +
во второй строке вашего фрагмента не находится в столбце 6 и что компилятор рассматривает его как начальный символ в новом имени объекта, для которого он недопустим. Тот факт, что +
выровнен по вертикали с помощью n
в предыдущей строке, усиливает мое подозрение, что это может быть причиной вашей проблемы.
Добавление амперсанда, как предлагается в теперь удаленном ответ, на самом деле не помогает в этом случае, если вы продолжаете сообщать компилятору, что он имеет дело с исходным файлом с фиксированной формой. &
используется только для продолжения в исходных файлах свободной формы. Добавление оператора строки-конкатенации //
не помогает, так как за ним не следует другая строка, но заканчивается строка. //&
помог, но, вероятно, не нужен.
Я думаю, у вас есть 2 возможных решения, но выберите только один:
.f90
, который заставит gfortran
обрабатывать исходный файл как свободную форму. Если вы переходите на вариант 2 (который Я бы рекомендовал), вы можете либо использовать &
в конце строки, либо просто объединить строки. В свободной форме максимальная длина строки составляет 132 символа.
Добавление к ответу высокой производительности Mark:
Если вы продолжаете работу с FORTRAN 77, большинство компиляторов имеют возможность увеличить допустимую длину строки, например, -ffixed-form -ffixed-line-length-none
для gfortran. Как уже говорилось, Fortran> = 90 имеет длину строки 132, поэтому вам не нужно разделить строку.
Наконец, если вы хотите разделить строку в Fortran> = 90, вам нужно два амперсанды. В большинстве случаев вам нужен один, но для разделения строки вам нужно два:
namech='/home/matheus/Documents/UFABC/IC/Spectra/Elliptical/&
&espec.fits'