⊗ppPmDOGD 382 of 447 menu

Извличане на данни от свързани таблици в PHP

Нека направим заявка, която ще извлече всички потребители заедно с техните градове. За това ще ни трябва командата LEFT JOIN:

Синтаксисът ѝ изглежда по следния начин:

SELECT полета FROM име_на_таблица LEFT JOIN име_на_свързана_таблица ON условие_за_връзка WHERE условие_за_избор

Нека разгледаме отделните части от синтаксиса на тази команда.

Полета

Тъй като изборката е от няколко таблици, избирането на всички полета чрез * няма да работи. Следващата заявка ще избере полета само от основната таблица, но не и от свързаната:

SELECT *

За да се изберат данни от всички таблици, трябва преди * да се посочи името на таблицата за избор:

SELECT users.*, cities.*

Или може да се изброят нужните ни полета с посочване на името на таблицата пред тях:

SELECT users.name, cities.name

Тези два начина имат проблем. Работата е там, че ако полетата в таблиците имат еднакви имена, то в масива на PHP ще възникне конфликт на имена и ще победи само едно поле, а второто няма да има.

За решаване на проблема трябва конфликтните имена да се преименуват чрез командата as:

SELECT users.name, cities.name as city_name

Връзка

След командата ON трябва да посочим полета от двете таблици, по които се осъществява връзката. В нашия случай това ще бъде полето id от таблицата с градове и полето city_id от таблицата с потребители:

ON cities.id=users.city_id

Заявка

В крайна сметка заявката, която ще извлече потребителите заедно с техните градове ще изглежда по следния начин:

SELECT users.name, cities.name as city_name FROM users LEFT JOIN cities ON cities.id=users.city_id

Практически задачи

Да приемем, че имате таблица с продукти и таблица с техните категории. Напишете заявка, която ще извлече имената на продуктите заедно с техните категории.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне