ПредишенСледващото

таблица връзка към MySQL

Първоначално възнамерявах да направи излизането на "Народна инициатива" с колекция от грешки, допуснати в главната от мен :). Нещо, което съм събрал от грешките на традиционните елементи и т.н. Но животът е много по-интересно! Аз пиша за друга инициатива директно, без забавяне.

Така че някои хора го наричат ​​Вася пита обществен форум за MySQL.

Q:. Не е ясно как да се създаде връзка между масите, така че първото поле е автоматично вмъква данни на втория (ECHO и ECHO селективно с ID).

тип Вариант SELECT db.user, db.delete_priv, user.user, user.delete_priv ОТ db, ръководство КЪДЕ db.user = user.user не съвсем подходящ както за комуникация може да се нарече един участък.

О:. Аз честно казано не разбирам защо тази връзка не е за вас? Как тази връзка е удължена?

Q:. Е, не ми харесва връзката, въз основа на синтаксиса на заявка за търсене. Бих искал нещо по-съществено, в противен случай аз не виждам смисъл в ключовете и индексите.

О:. По-съществено - да кажеш графичния интерфейс на MS Access?

За съжаление, за достъп работи по същия начин - просто натиснете бутон "на SQL", и ще видите връзката ", участък".

Q:. Аз просто по-просто софтуер за всичко това, добрата масичката направя. След като в MySQL, че не работи.

О:. Вместен линии, рекурсия? Кажи ми защо го направи база данни и таблици?

Q:. Не са вложени цикъла и рекурсия - четат п-ия kolmchestvo масиви и работят с тях вече. И направи връзката на базата на Selecta - не точно това, което ми трябва.

О:. Точно така. Запазване на всички в един файл, а след това на всички въпроси няма.

Като цяло, това е мой дълг да сортирате чрез таблици връзка.

Външния ключ, чек, и клаузи СПРАВКИ всъщност не правят нищо. Синтаксисът за тях се предоставя само за съвместимост, за да направи по-лесно да пренесете код от други SQL сървъри и да стартирате приложения, които създават таблици с препратки. Вижте раздел 5.4 Функционалност изчезнали от MySQL.

Комуникация без участък

Като цяло, не е преувеличение, описвайки отношенията в искането не беше не - в продължение на векове в базата данни работи по този начин. Достъп със стрелките и formopostroitelyami се появи много по-късно.

Как да обърка

Така например, по следния начин:

имената на колоните в заявката и се съхраняват в масив $ търкайте с.

Сега изберете новината, а вместо избрания номер колона въведете съответния елемент от графите за масив.

Всъщност, можете да си спестите от необходимостта да се влача през цялата програма на масива $ разтривайте (и ако ние трябва да рубрики обръщат функция - че поемат GLOBAL), възможността да се направи грешка с $ търкайте [$ ред [ "разтриване"]] - ако страницата няколко подобни искания, правописна грешка някъде лесно.

В допълнение, масив $ разтривайте изисква определено количество памет (като че ли много колони?). Третата версия на PHP скрипт, отнема повече време, отколкото с помощта на таблицата на сдружаване, защото той интерпретира по линията на програмата, когато (за разлика от 4-ти, която събира на програмата и след това да се изпълнява).

В горния пример може да се прилага таблица сдружаване и да се отърве от недостатъците, описани.

Така че тук е по-добре да се използва заявката "SELECT sites.id, URL sites.name като SITENAME, rubs.name като rubsname, rubs.id като rub_id от сайтове, потрива КЪДЕ sites.rub = rubs.id". Оказва се, че ние трябва да се подготви на масите, се грижи за отнемането на само елементите и пишат по-малко код.

Синтаксисът за присъединяване маси

Лесна връзка - INNER JOIN:

SELECT ОТ таблица 1 INNER JOIN Таблица 2 ON table1.field1 = table2.field

SELECT ОТ Таблица 1, Таблица 2, КЪДЕТО table1.field1 = table2.field2

SELECT ОТ таблица 1 ВЪТРЕШНА УЧАСТВА В Таблица 2, използвайки (Field1)

ако таблиците са свързани с областта на поле 1.

Това съединение избрана линия само тези таблици, които съответстват на състоянието на присъединят - равенство от стойности на полетата. Ако не са налице съответните линия Таблица 1 редици от Таблица 2, ред пропуска резултат от заявката. Ако е необходимо да се преброят на сайтове в категория (продължава примера на каталога), такова искане не отговарят съвсем точно - само колони са в списъка, който има сайтове. За такава операция е необходимо да се използва ЛЯВА JOIN.

SELECT ОТ таблица 1 НАЛЯВО JOIN Таблица 2 ON table1.field1 = table2.field2

SELECT ОТ таблица 1 НАЛЯВО УЧАСТВА В Таблица 2, използвайки (Field1)

ако таблиците са свързани с областта на поле 1.

В този случай, съответния ред в Таблица 2 не може да бъде, а след това в областта на Таблица 2 получаваме NULL и ако работата на групата, както е случаят с броя на сайтовете в категорията, а в областта ще бъде 0:

SELECT rubs.id, име, COUNT (sites.id) като сайтове от трие LEFT JOIN сайтове rubs.id = sites.rub група чрез rubs.id

Забележка: този номер няма и в двете таблици, така че трябва да използвате името на една маса в тяхното предназначение. Между другото, ако съюзът не използва партида операции, по-добре е да се промени името на областта като оператор, за да се избегне объркване.

Подкрепете проекта - споделете линка, благодаря!