PHP-де байланысты кестелерден деректерді алу
Барлық пайдаланушыларды олардың қалаларымен бірге алатын сұраныс жасайық. Ол үшін
бізге LEFT
JOIN командасы қажет болады:
Оның синтаксисі келесідей:
sqlSELECT өрістер FROM кесте_аты
LEFT JOIN байланысқан_кесте_аты ON байланыс_шарты
WHERE таңдау_шарты
Осы команда синтаксисінің жеке бөліктерін қарастырайық.
Өрістер
Таңдау бірнеше кестеден жүргендіктен,
* арқылы барлық өрістерді таңдау
жұмыс істемейді. Келесі сұраныс тек негізгі
кестенің өрістерін таңдайды, бірақ байланысты кестенікін емес:
sqlSELECT *
Барлық кестелерден деректер таңдалуы үшін,
* алдында таңдау үшін кесте атын көрсету керек:
sqlSELECT users.*, cities.*
Немесе бізге қажет өрістерді олардың алдында кесте атын көрсетіп тізбелей аламыз:
sqlSELECT users.name, cities.name
Бұл екі әдісте мәселе бар. Мәселе мынада, егер кестелердегі өрістердің атаулары бірдей болса, онда PHP массивінде атаулар қақтығысады және тек бір өріс ғана жеңіп шығады, ал екіншісі болмай қалады.
Мәселені шешу үшін қақтығысатын атауларды
as командасы арқылы қайта атау керек:
sqlSELECT users.name, cities.name as city_name
Байланыс
ON командасынан кейін біз
байланыс жасалатын екі кестенің өрістерін көрсетуіміз керек.
Біздің жағдайда бұл id өрісі
қалалар кестесінен және city_id өрісі
пайдаланушылар кестесінен болады:
sqlON cities.id=users.city_id
Сұраныс
Нәтижесінде, пайдаланушыларды олардың қалаларымен бірге алатын сұраныс келесідей болады:
sqlSELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
Практикалық тапсырмалар
Сізде тауарлар кестесі және олардың санаттарының кестесі бар делік. Тауарлардың атауларын олардың санаттарымен бірге алатын сұраныс жазыңыз.