JOINs — Wadashaqeynta Miisaska
Database-yada dhabta ah waxay leeyihiin miisas badan oo xidid isku xidhan. JOIN-ku wuxuu kuu ogolaanayaa inaad xogaha miisaskaas ku dareyso codsigaaga.
Sababta JOINs loo baahan yahay
Tani waa nidaamka faa’iidada leh — halkii laga geliyay dhammaan xogta hal miis:
Miiska: dalabka
| id | isticmaale_id | alaab_id | xad | taariikh |
|----|---------------|----------|-----|-----------|
| 1 | 42 | 7 | 3 | 2024-03-01|
| 2 | 15 | 2 | 1 | 2024-03-02|
Miiska: isticmaalayaasha
| id | magaca | email |
|----|-------------|-------------------|
| 42 | Axmed Cumar | axmed@example.com |
| 15 | Fadumo Ali | fadumo@example.com|
Miiska: alaabta
| id | magaca | qiimaha |
|----|----------|---------|
| 7 | Laptop | 899.99 |
| 2 | Telefoon | 299.99 |
Xogta saddexda miisba waxaan ku wehel weesha hal JOIN.
INNER JOIN — Kuwa labadaba ku jira
INNER JOIN (ama JOIN oo keliya) wuxuu soo celinayaa safaf oo keliya miisaska labadaba ku jira qiime la mid ah.
-- Hel dalabka iyo magacyada isticmaalayaasha
SELECT
dalabka.id AS dalabka_id,
isticmaalayaasha.magaca,
isticmaalayaasha.email,
dalabka.xad,
dalabka.taariikh
FROM dalabka
INNER JOIN isticmaalayaasha
ON dalabka.isticmaale_id = isticmaalayaasha.id;
Natiijada:
| dalabka_id | magaca | email | xad | taariikh |
|-----------|-------------|---------------------|-----|------------|
| 1 | Axmed Cumar | axmed@example.com | 3 | 2024-03-01 |
| 2 | Fadumo Ali | fadumo@example.com | 1 | 2024-03-02 |
Magacyada Gaagaaban (Aliases)
Qoraalka dhaadheer waxaa laga gaabiyaa AS isticmaalka:
SELECT
d.id,
i.magaca,
a.magaca AS alaab_magaca,
d.xad,
(d.xad * a.qiimaha) AS wadarta
FROM dalabka AS d
JOIN isticmaalayaasha AS i ON d.isticmaale_id = i.id
JOIN alaabta AS a ON d.alaab_id = a.id
ORDER BY d.taariikh DESC;
LEFT JOIN — Dhammaan Miiska Bidixda
LEFT JOIN wuxuu soo celinayaa dhammaan safaf miiska bidixda, xitaa kuwa aan miiska midigta u lahayn mid u dhigma.
-- Hel dhammaan isticmaalayaasha, hadday dalabka lahaystaan ama kale
SELECT
i.magaca,
i.email,
COUNT(d.id) AS tirada_dalabka
FROM isticmaalayaasha AS i
LEFT JOIN dalabka AS d ON i.id = d.isticmaale_id
GROUP BY i.id, i.magaca, i.email
ORDER BY tirada_dalabka DESC;
Isticmaalayaasha aan wax dalabna lahayn waxay heli doonaan 0 tirada dalabka — mana ka baxi doonaan natiijooyinka.
Kala soocista:
INNER JOIN= labadaba isku xidkaan laha.LEFT JOIN= dhammaan kuwa bidixda + kuwa la mid ah ee midigta.
Saddex Miis isku xidka
-- Warbixin buuxda: isticmaale + dalabka + magaca alaabta
SELECT
i.magaca AS macmiil,
a.magaca AS alaab,
d.xad,
a.qiimaha,
(d.xad * a.qiimaha) AS wadarta,
d.taariikh
FROM dalabka AS d
JOIN isticmaalayaasha AS i ON d.isticmaale_id = i.id
JOIN alaabta AS a ON d.alaab_id = a.id
WHERE d.taariikh >= '2024-01-01'
ORDER BY d.taariikh DESC
LIMIT 50;
Qaababka JOIN-ka Kale
-- RIGHT JOIN: dhammaan kuwa midigta (isticmaalka yar)
SELECT * FROM alaabta AS a
RIGHT JOIN dalabka AS d ON a.id = d.alaab_id;
-- FULL OUTER JOIN: labada miis oo dhan (PostgreSQL)
SELECT * FROM A FULL OUTER JOIN B ON A.id = B.a_id;
-- CROSS JOIN: dhammaan isku dararka suurtagalka ah (isticmaalka yar)
SELECT * FROM midab CROSS JOIN baaxad;
-- Haddii midab = 3, baaxad = 4 → 12 safo
Farsamada Wanaagsan
- Geli magaca miiska tiirarka marka JOINs aad isticmaalayso:
i.magacahalkiimagacaoo keliya - Isticmaal aliases (
AS d) koodhka si fudud loo akhriyo - JOIN-ka hore ah INDEX-ka column-ka JOIN-ka loogu isticmaalo (DBA-daagu taasi wey garanayaan)
- Ka hor inaad isticmaasho
SELECT *, gaar ahaan JOINs - tiirarka badan oo isku magac ah waxay dhibi kartaan
Xirfad Dhaqameed
Warbixinta Dalabka
Haysataa saddex miis: `macaamiilka` (id, magaca, magaalada), `dalabka` (id, macmiil_id, taariikh, wadarta), `xaaladda_dalabka` (dalabka_id, xaaladda). Qor query soo keenaysa dalabka oo dhan leh: magaca macmiilka, magaalada, wadarta, iyo xaaladda. Kala sooc wadarta hoos-u-dhac.