⊗ppPmDOFR 385 of 447 menu

მონაცემთა ნათესაური კავშირები PHP-ში

დავუშვათ, ჩვენ წინაშე დგას ამოცანა: შევინახოთ მამები და ვაჟები. დავუშვათ, რომ თითოეულ მამას შეიძლება ჰყავდეს მხოლოდ ერთი ვაჟი, ხოლო ვაჟს თავის მხრივ შეიძლება ჰყავდეს ერთი ვაჟი.

უნდა ვიფიქროთ, როგორ შევინახავთ მონაცემებს. პირველი იდეა, რაც თავში შეიძლება მოგვიდეს, - გავაკეთოთ ორი ცხრილი: parents მამებისთვის და sons ვაჟებისთვის. შემდეგ დავაკავშიროთ ეს ცხრილები რაიმე ველით: son_id ან parent_id.

თუმცა, ეს იდეა არც ისე კარგია - ბოლოსდაბოლოს ერთი და იგივე ადამიანი შეიძლება იყოს ერთდროულად როგორც მამა, ასევე ვაჟი - და მოგვიწევს მისი შენახვა ორივე ცხრილში, რაც არაა მოსახერხებელი, უფრო მეტ ადგილს იკავებს და ადვილად იწვევს შეცდომებს.

უფრო კარგი ვარიანტია - ცხრილი თავისთავად დავაკავშიროთ: გავაკეთოთ ცხრილი users, მასში შ�ინახავთ ყველა მომხმარებელს და თითოეულს გავაკეთებთ ველს son_id, რომელშიც შეინახება id ვაჟისა იმავე ცხრილიდან:

users
id name son_id
1 user1 2
2 user2 3
3 user3 null

მოთხოვნები

ახლა დავწეროთ მოთხოვნა, რომელიც გამოიტანს მომხმარებელს მის ვაჟთან ერთად.

ჯერ უბრალოდ გამოვიტანოთ მომხმარებლები:

SELECT * FROM users

ახლა დავაჯოინოთ მომხმარებლებს მათი ვაჟები. ჩვენ ცხრილს თავის თავს დავაჯოინებთ, ამიტომ საჭიროა მისი გადარქმევა:

LEFT JOIN users as sons

ახლა ჩვენ შეგვიძლია მივუთითოთ კავშირი ძირითად ცხრილსა და გადარქმეულ ცხრილს შორის:

LEFT JOIN users as sons ON sons.id=users.son_id

ახლა მივუთითოთ ველები:

SELECT users.name as user_name, sons.name as son_name

ახლა ყველაფერი ერთად ავიღოთ და მივიღოთ შემდეგი მოთხოვნა:

SELECT users.name as user_name, sons.name as son_name FROM users LEFT JOIN users as sons ON sons.id=users.son_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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა