Представь, что тебе нужно решить задачу с одноименным отцом на бумаге. (Вживемся в роль СУБД) У тебя есть листок с таблицей номер человека | ФИО | Дата рождения | Номер отца Проблема в том, что ты можешь смотреть в один момент только на одну строчку таблицы. Зато можно заглядывать в другие таблицы, не забывая строчку из первой
Поэтому ты идешь к ксероксу и делаешь копию этого листа. Теперь у тебя две одинаковые копии одной таблицы. Ты помечаешь их как Тable1 и Тable2, чтобы не перепутать.
На этом этапе у нас есть запрос: select * from table as table1, table as table2
Теперь можно приступить к решению непосредственно задачи. Ты берешь первую строчку из первой таблицы и сравниваешь с каждой строчкой второй таблицы. Что ты ищешь? В первой таблице у нас сын, во второй таблице ты ищешь его отца. Это означает, что ты берешь номер отца из первой таблицы и сравниваешь с просто номером из второй. Тебе подходят только пары, где эти два номера равны.
На этом этапе у нас есть запрос: select * from table as table1, table as table2 WHERE table1.Father_Person_ID = table2.ID
Но в получившемся списке у тебя по-прежнему есть лишние пары! Теперь при сравнении строчка-строчка ты проверяешь еще одно условие: имя отца и сына одинаковое. Теперь у нас есть запрос select * from table as table1, table as table2 WHERE table1.Father_Person_ID = table2.ID AND table1.first name = table1.first name
Это и есть наш окончательный запрос.
Мы поставили AND, потому что нам нужно, чтобы оба условия выполнялись вместе.
И на всякий случай уточню: Тable1 и Тable2 - твои личные выдуманные пометки, ты могла их назвать sdgsdfgsdfgdsfg1 и gogogogog.
no subject
Date: 2012-09-29 11:35 pm (UTC)Представь, что тебе нужно решить задачу с одноименным отцом на бумаге.
(Вживемся в роль СУБД)
У тебя есть листок с таблицей
номер человека | ФИО | Дата рождения | Номер отца
Проблема в том, что ты можешь смотреть в один момент только на одну строчку таблицы. Зато можно заглядывать в другие таблицы, не забывая строчку из первой
Поэтому ты идешь к ксероксу и делаешь копию этого листа. Теперь у тебя две одинаковые копии одной таблицы. Ты помечаешь их как Тable1 и Тable2, чтобы не перепутать.
На этом этапе у нас есть запрос:
select * from table as table1, table as table2
Теперь можно приступить к решению непосредственно задачи.
Ты берешь первую строчку из первой таблицы и сравниваешь с каждой строчкой второй таблицы.
Что ты ищешь?
В первой таблице у нас сын, во второй таблице ты ищешь его отца.
Это означает, что ты берешь номер отца из первой таблицы и сравниваешь с просто номером из второй. Тебе подходят только пары, где эти два номера равны.
На этом этапе у нас есть запрос:
select * from table as table1, table as table2
WHERE table1.Father_Person_ID = table2.ID
Но в получившемся списке у тебя по-прежнему есть лишние пары!
Теперь при сравнении строчка-строчка ты проверяешь еще одно условие: имя отца и сына одинаковое.
Теперь у нас есть запрос
select * from table as table1, table as table2
WHERE table1.Father_Person_ID = table2.ID
AND table1.first name = table1.first name
Это и есть наш окончательный запрос.
Мы поставили AND, потому что нам нужно, чтобы оба условия выполнялись вместе.
И на всякий случай уточню: Тable1 и Тable2 - твои личные выдуманные пометки, ты могла их назвать sdgsdfgsdfgdsfg1 и gogogogog.