Прочитайте это и попробуйте, это поможет вам:
Таблица1
column11,column12,column13,column14
Таблица2
column21,column22,column23,column24
SELECT table1.column11,table1.column12,table2asnew1.column21,table2asnew2.column21
FROM table1 INNER JOIN table2 AS table2asnew1 ON table1.column11=table2asnew1.column21 INNER TABLE table2 as table2asnew2 ON table1.column12=table2asnew2.column22
table2asnew1
- это пример таблицы 2, который соответствует table1.column11=table2asnew1.column21
и
table2asnew2
, является еще одним экземпляром таблицы 2, который сопоставляется table1.column12=table2asnew2.column22
Вмешивание исторически.
, Когда я был намного младшим человеком (1970-е), ассемблер был важен, по моему опыту, больше для размера кода, чем скорость кода.
, Если модуль на высокоуровневом языке был, скажем, 1 300 байтов кода, но ассемблерная версия модуля составляла 300 байтов, это, 1K байты были очень важны, когда Вы пытались вместить приложение в 16K или 32K памяти.
Компиляторы не были большими в то время.
В таком, как в старые добрые времена Фортране
X = (Y - Z)
IF (X .LT. 0) THEN
... do something
ENDIF
компилятор в то время сделал ВЫЧИТАТЬ инструкцию, затем ТЕСТОВУЮ инструкцию относительно X. В ассемблере Вы просто проверили бы код условия (нуль LT, нуль, нуль GT) после вычитания.
Для современных систем и компиляторов ничего подобного не беспокойство.
я действительно думаю, что понимание, что делает компилятор, все еще важно. Когда Вы кодируете на высокоуровневом языке, необходимо понять то, что позволяет или предотвращает компилятор, чтобы сделать, цикл - разворачивает.
И с конвейерной обработкой и предварительным вычислением, включающим условные выражения, когда компилятор делает "ответвление-likley"
, Ассемблер все еще необходим при выполнении вещей, не позволенных высокоуровневым языком, как чтение или запись в определенные для процессора регистры.
, Но в основном, это больше не необходимо для общего программиста, кроме иметь основное понимание того, как код мог бы быть скомпилирован и выполнен.