⊗ppPmDOLVT 384 of 447 menu

PHP-de baglanyşyk tablisasy arkaly baglanyşyk

Indi ulanyjynyň dürli şäherlerde bolup geçendigi bolsun. Bu ýagdaýda ulanyjylaryň tablisasy aşakdaky görnüşde bolup biler:

users
id name city
1 user1 city1, city2, city3
2 user2 city1, city2
3 user3 city2, city3
4 user4 city1

Maglumatlary şeýle saklamak nädogrydygyny düşünmek kyn däl - şäherleri aýratyn tablisada saklamaly. Bu ýerde ol:

cities
id name
1 city1
2 city2
3 city3

Şonda-da, her bir ulanyjy birnäçe şähere salgylanýan etmek isleýäris. Iki tablisa bilen muny etmek mümkin däl.

Biz soňunda baglanyşyk tablisasy diýilýän tablisany girizmeli bolarys, onyň ulanyjy bilen onuň şäherlerini baglajak.

Bu tablisanyň her ýazgyşynda ulanyjy we bir şäheriň arasyndaky baglanyşyk saklanylar. Bu ýagdaýda bir ulanyjy üçin bu tablisada näçe şäherde bolsa, şonça ýazgy bolýar.

Bu bizim baglanyşyk tablisamyz:

users_cities
id user_id city_id
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 3 2
7 3 3
8 4 1

Ulanyjylaryň tablisasy diňe ulanyjylaryň adlaryny saklar, baglanyşyklarsyz:

users
id name
1 user1
2 user2
3 user3
4 user4
5 user5

Soraglar

Geliň şäherleri bilen bilelikde ulanyjylary alyp çykmaga kömek eder ýaly bir sorag düzedeliň. Bunuň üçin bize iki goşulma (join) gerek bolar: birinji goşulma ulanyjylara baglanyşyk tablisasyny birikdirer, ikinji goşulma bolsa baglanyşyklar boýunça şäherleri birikdirer:

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

Soragyň netijesi

Bizim soragymyzyň PHP-de netijesi her bir ulanyjynyň adyny näçe gezek şäher bilen baglanyşykly bolsa, şonça gezek öz içine alar:

<?php $arr = [ ['user_name' => 'user1', 'city_name' => 'city1'], ['user_name' => 'user1', 'city_name' => 'city2'], ['user_name' => 'user1', 'city_name' => 'city3'], ['user_name' => 'user2', 'city_name' => 'city1'], ['user_name' => 'user2', 'city_name' => 'city2'], ['user_name' => 'user3', 'city_name' => 'city2'], ['user_name' => 'user3', 'city_name' => 'city3'], ['user_name' => 'user4', 'city_name' => 'city1'], ]; ?>

Ine şeýle massiw öwürmek we ony aşakdaky görnüşe öwürmek has amatly bolar:

<?php $res = [ ['user1' => ['city1', 'city2', 'city3']], ['user2' => ['city1', 'city2']], ['user3' => ['city2', 'city3']], ['user4' => ['city1']], ]; ?>

Ine şeýle öwürmeler ýerine ýetirýän kody ýazalyň:

<?php $res = []; foreach ($data as $elem) { $res[$elem['user_name']][] = $elem['city_name']; } var_dump($res); ?>

Amaly meseleler

Harydyň birnäçe kategoriýa degişli bolup bilýändigi bolsun. Saklamanyň gurluşyny beýan ediň.

Harytlary öz kategoriýalary bilen bilelikde alýan soragy ýazyň.

Alynan maglumatlary ul sanawy görnüşinde görkeziň, ýöne her bir li-de ilki önümiň ady durmaly, soňra iki nokatdan soň bu önümiň kategoriýalary vergül bilen sanawlanmaly. Mysal üçin:

<ul> <li>product1: category1, category2, category3</li> <li>product2: category1, category3</li> <li>product3: category1</li> </ul>
Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et