• Գլխավոր
  • Լուրեր
    • Առողջապահություն
    • Անվտանգություն
    • Արհեստական Ինտելեկտ
    • Էկոլոգիա
    • Մեքենաշինություն
    • Ռոբոտաշինություն
    • Համացանց
    • Համակարգիչ
    • Սմարթֆոն
    • Սոցցանց
    • Google
    • Microsoft
    • Hi-Tech
  • Վեբ
    • PHP
    • HTML
      • HTML5
    • CSS
      • CSS3
    • JavaScript
      • jQuery
    • WordPress
  • SQL
  • Թեստեր
    • PHP
    • MySQL
    • HTML
    • JavaScript
    • CSS
  • Ֆորում
  • Հետադարձ կապ
IT-Blog.am
Տեղեկատվական տեխնոլոգիաների պորտալ
  • Գլխավոր
  • Լուրեր
    • Առողջապահություն
    • Անվտանգություն
    • Արհեստական Ինտելեկտ
    • Էկոլոգիա
    • Մեքենաշինություն
    • Ռոբոտաշինություն
    • Համացանց
    • Համակարգիչ
    • Սմարթֆոն
    • Սոցցանց
    • Google
    • Microsoft
    • Hi-Tech
  • Վեբ
    • PHP
    • HTML
      • HTML5
    • CSS
      • CSS3
    • JavaScript
      • jQuery
    • WordPress
  • SQL
  • Թեստեր
    • PHP
    • MySQL
    • HTML
    • JavaScript
    • CSS
  • Ֆորում
  • Հետադարձ կապ
Գլխավոր  /  MySQL • SQL • Web  /  MySQL JOINS (MySQL միացումներ)
MySQL joins
13 Հունիսի 2016

MySQL JOINS (MySQL միացումներ)

Հեղինակ Եվգինե
MySQL, SQL, Web

MySQL  միացումները(JOINS) հնարավորություն են տալիս մի քանի աղյուսակներից ստանալ ինֆորմացիա միաժամանակ, այսինքն մի SELECT հրամանով ստանալ անհրաժեշտ տվյալները երկու և ավելի աղյուսակներից: Կախված պահանջվող արդյունքից MySQL-ը թույլ է տալիս միացման 3 եղանակ՝

  • INNER JOIN,
  • LEFT JOIN,
  • RIGHT JOIN

Ունենք երկու պարզ աղյուսակ՝ ապրանքներ(products) և նկարագրություններ(descriptions), որոնք պարունակում են որոշակի ինֆորմացիա տարբեր ապրանքների մասին: Այս աղյուսակների օգնությամբ դիտարկենք միացումների մի քանի օրինակ:

products

descriptions

Եթե ուշադիր դիտեք, ապա կտեսնեք, որ աղյուսակների մեջ մի քանի տող բացակայում են: Ապրանքներ աղյուսակում չկան 3-րդ և 5-րդ, իսկ նկարագրություններ աղնուսակում՝ 1-ին և 6-րդ տողերը:

INNER JOIN

Այս միացումը հնարավորություն է տալիս աղյուսակներից ստանալ միայն այն տողերը, որոնք պարտադիր կան նշված աղյուսակներից յուրաքանչյուրի մեջ:

SELECT `products`.*, `descriptions`.*  FROM `products`
INNER JOIN `descriptions` ON `products`.`id` = `descriptions` .`id`

Select հրամանով ստանում ենք այն տողերը, որոնք կան և՛ ապրանքներ, և՛ նկարագրություններ աղյուսակներում: * սիմվոլը նախատեսված է աղյուսակից ամբողջ ինֆորմացիան ստանալու համար: Դրա փոխարեն կարող եք ստանալ աղյուսակի ցանկացած սյուն՝ գրելով աղյուսակի անունը, հետո կետ և սյան անունը, օրինակ՝ `products`.`id`,`products`.`quantity`, `descriptions`.`amount` և այլն: FROM-ից հետո նշում ենք հիմնական աղյուսակի անունը, INNER JOIN-ից հետո միացվող աղյուսակի անունը, իսկ ON հրամանը թույլ է տալիս աղյուսակները <<կապել>> իրար, այսինքն՝ հրամանը կատարվելիս աղյուսակները կհամեմատվի ըստ այդ պայմանի: Հրամանը կատարվելուց հետո կստանանք հետևյալ տողերը՝

innerJoin

Ինչպես տեսնում եք այն վերադարձրել է երեք տող, քանի որ միայն այդ տողերի `id`-ներն են համապատասխանում:

ON-ի փոխարեն կարող ենք օգտագործել նաև USING() ֆունկցիան, միայն, եթե երկու աղյուսակների համեմատվող սյուների անունները նույնն են, հակառակ դեպքում օգտագործվում է ON-ը:

INNER JOIN-ին համարժեք են նաև CROSS JOIN-ը, JOIN-ը և ստորակետով միացումը: Հետևյալ 3 հարցումները կվերադարձնեն նույն տողերը, ինչ վերևում դիտարկված Select-ը:

SELECT * FROM `products` CROSS JOIN `descriptions` USING(`id`)

SELECT * FROM `products` JOIN `descriptions` USING(`id`)

SELECT * FROM `products`,`descriptions` WHERE `descriptions`.`id` = `products`.`id`

Եթե միացումն անում ենք ստորակետով, ապա չենք կարող օգտագործել  ոչ՛ ON, ոչ՛ USING կառուցվածքները, դրա փոխարեն կիրառվում է  WHERE  պայմանը:

LEFT JOIN

LEFT JOIN-ը հնարավորություն է տալիս ստանալ տվյալներ աղյուսակից և այն լրացնել այլ աղյուսակի տվյալներով: Օրինակ՝ ստանանք  բոլոր ապրանքների անունները և դրանց համապատասխան նկարագրությունները:

SELECT * FROM `products` LEFT JOIN `descriptions` USING(`id`)

Հարցումը կատարվելուց հետո կստանանք հետևյալ տողերը՝

leftJoin

Ինչպես տեսնում եք, `descriptions` աղյուսակից ստացած տվյալներից մի քանիսի փոխարեն  NULL արժեքներ են: Դա պայմանավորված է նրանով, որ `products` աղյուսակի  `id` սյան հետ համապատասխանեցում չի եղել: Եվ իրոք, եթե դիտենք `descriptions` աղյուսակի տվյալները, ապա կտեսնենք, որ  `id` սյունում չունենք 1-ին և 6-րդ տողերը:

RIGHT JOIN

RIGHT JOIN-ը գործնականում չի տարբերվում LEFT JOIN-ից, բացառությամբ այն բանի, որ տվյալները վերցվում են երկրորդ աղյուսակից (JOIN-ից հետո գրված) և համեմատվում առաջին աղյուսակի հետ:

SELECT * FROM `products` RIGHT JOIN `descriptions` USING(`id`)

Հարցումը կվերադարձնի հետևյալ տողերը՝

rightJoin

Ինչպես տեսնում եք այս դեպքում արդեն `products` աղյուսակի տվյալներից մի քանիսն են NULL արժեքներով, քանի որ այն չունի համապատասխան տողեր `descriptions`-ի հետ:

Ինչպես ասացի հոդվածի սկզբում MySQL  միացումների օգնությամբ  կարող ենք ստանալ տվյալներ մի քանի աղյուսակներից: Մենք դիտարկեցինք միայն երկու աղյուսակների միացումները, իսկ հիմա օրինակով դիտարկենք 2-ից ավել աղյուսակների միացման օրինակ:

SELECT 
  `products`.`product_name`,
  `descriptions`.`product_description`,
  `sale`.`sum` 
FROM
  `products` 
  INNER JOIN `descriptions` USING (`id`) 
  LEFT JOIN `sale` 
    ON `sale`.`p_id` = `products`.`id`

Այսքանով ավարտեցինք MySQL  միացումների թեման: Եթե առաջանան հարցեր ապա կարող եք թողնել մեկնաբանություն կամ գրել Ձեր հարցը  քննարկումների բաժնում։

Շնորհակալություն մեր բլոգից օգտվելու համար։  Հարգանքներով՝ IT-Blog.am թիմ:

Կապված գրառումներ

  • mysql transaction

    MySQL գործարքի(transaction) կառավարման օպերատորներ

    11/19/2016
  • Class

    Կլասների (classes) գրելաձևը (syntax)

    10/20/2016
  • MySQL Trigger

    MySQL տրիգերներ (Triggers) և իրադարձություններ(Events)

    10/04/2016
Facebook
  • Շատ Դիտված Գրառումներ
  • Նոր գրառումներ
  • Calculator
    Հաշվիչի (calculator) պատրաստում 04/18/2016
  • MySQL joins
    MySQL JOINS (MySQL միացումներ) 06/13/2016
  • Սուպերգլոբալ փոփոխականներ (superglobals) 03/24/2016
  • Sendmail կարգավորումներ 04/01/2016
  • Recursion
    Ռեկուրսիա (recursion) հասկացությունը 06/02/2016
  • Ի՞նչ է Pi Network-ը և ինչպե՞ս վաստակել Pi 03/27/2020
  • Honda-ն ներկայացրել է մոտոցիկլետ, որն օգտագործում է քամու էներգիա 12/23/2017
  • Նոր 3D-տպիչ սարքը ստեղծում է առարկաներ վայրկյանների ընթացքում 12/22/2017
  • Հետազոտողներն օգտագործում են էլեկտրական հոսանքներ`մարդու հյուսվածքներում քաղցկեղի հայտնաբերման համար 12/18/2017
  • Nvidia ընկերությունը ներկայացրել է երբևէ ստեղծված ամենահզոր գրաֆիկական պրոցեսորը 12/16/2017
  • WordPress -ի տեղադրումը .Net -ի վրա 03/16/2017
  • Class
    Կլասների (classes) գրելաձևը (syntax) 10/20/2016
  • encapsulation
    Ինկապսուլացիա (Encapsulation) 08/17/2016
  • object oriented programming
    Օբյեկտ կողմնորոշված ծրագրավորում (OOP) 07/04/2016
  • Ի՞նչ է Pi Network-ը և ինչպե՞ս վաստակել Pi 03/27/2020
  • Honda-ն ներկայացրել է մոտոցիկլետ, որն օգտագործում է քամու էներգիա 12/23/2017
  • Նոր 3D-տպիչ սարքը ստեղծում է առարկաներ վայրկյանների ընթացքում 12/22/2017
  • mysql transaction
    MySQL գործարքի(transaction) կառավարման օպերատորներ 11/19/2016
  • MySQL Trigger
    MySQL տրիգերներ (Triggers) և իրադարձություններ(Events) 10/04/2016
  • Procedures and Functions
    MySQL ընթացակարգեր (procedures) և ֆունկցիաներ (functions) 08/31/2016
  • MYSQL View
    MySQL ներկայացումներ (VIEWS) 07/16/2016
  • WordPress -ի տեղադրումը .Net -ի վրա 03/16/2017
  • SEO խրվակներ WordPress-ի համար 04/25/2016
  • Ծանոթացում WordPress-ի կառավարակետի հետ (մաս 2) 02/24/2016
  • Ի՞նչ է CMS-ը 02/17/2016
© 2020 թ.  IT-Blog.am Բոլոր հեղինակային իրավունքները պաշտպանված են:

Սույն կայքում տեղադրված նյութերի հեղինակային իրավունքը պատկանում է բացառապես IT-Blog.am կայքի հեղինակներին և կայքում բոլոր հրապարակված նյութերն անհատական օգտագործման համար են։ Այս կայքում  հրապարակված նյութերի (մասնակի կամ ամբողջական) վերահրապարկումը տեղեկատվություն տարածող այլ միջոցներում (բացառությամբ սոցկայքերի) արգելված է։ Խախտում թույլ տված անձինք կենթարկվեն պատասխանատվության` օրենքով սահմանված կարգով։