

Email : jirene113@gmail.com
Instagram : https://www.instagram.com/irenegani
RPubs : https://rpubs.com/irenegani/
Department : Business Statistics
Address : ARA Center, Matana University Tower
Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.
Connect to MySQL
library(DBI)
library(RMySQL)
library(DT)
Jocelyn <- dbConnect(MySQL(),
user='root',
password='',
dbname='dataraw',
host='localhost',
port=3306)
knitr::opts_chunk$set(conection="Jocelyn")
Excercise
Apply Left join and Right join to returns all records from table Orders and any matching records from table Suppliers.
SELECT *
FROM Orders O
LEFT JOIN OrderDetails OD
ON O.OrderID = OD.OrderID
LEFT JOIN Products P
ON OD.ProductID = P.ProductID
LEFT JOIN Suppliers S
ON P.SupplierID = S.SupplierID
ORDER BY O.CustomerID
datatable(Data1,
caption = htmltools::tags$caption(
style = 'caption-side: bottom; text-align: center;',
htmltools::em('Table 1: SQL Left Join.')),
extensions = 'FixedColumns',
options = list(scrollX = TRUE, fixedColums = TRUE)
)
Choose the correct JOIN clause to select all records from the two tables (Orders and Suppliers) where there is a match in both tables.
SELECT *
FROM Orders O
INNER JOIN OrderDetails OD
ON O.OrderID = OD.OrderID
INNER JOIN Products P
ON OD.ProductID = P.ProductID
INNER JOIN Suppliers S
ON P.SupplierID = S.SupplierID
ORDER BY O.CustomerID
datatable(Data2,
caption = htmltools::tags$caption(
style = 'caption-side: bottom; text-align: center;',
htmltools::em('Table 2: SQL Inner Join.')),
extensions = 'FixedColumns',
options = list(scrollX = TRUE, fixedColums = TRUE)
)
Choose the correct JOIN clause to select all the records from the Suppliers table plus all the matches in the Orders table.
SELECT *
FROM Orders O
RIGHT JOIN OrderDetails OD
ON O.OrderID = OD.OrderID
RIGHT JOIN Products P
ON OD.ProductID = P.ProductID
RIGHT JOIN Suppliers S
ON P.SupplierID = S.SupplierID
ORDER BY O.CustomerID
datatable(Data3,
caption = htmltools::tags$caption(
style = 'caption-side: bottom; text-align: center;',
htmltools::em('Table 3: SQL Right Join.')),
extensions = 'FixedColumns',
options = list(scrollX = TRUE, fixedColums = TRUE)
)
LS0tDQp0aXRsZTogIkRhdGFiYXNlIFN5c3RlbSINCnN1YnRpdGxlOiAiU0RCIFFTTCBKb2luIFRhYmxlIg0KYXV0aG9yOiAiSm9jZWx5biBJcmVuZSBHYW5pIg0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDogDQogICAgaHRtbF9kb2N1bWVudDogbnVsbA0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogc2FuZHN0b25lDQogICAgY3NzOiBzdHlsZSAoMykuY3NzDQogICAgaGlnaGxpZ2h0OiBtb25vY2hyb21lDQotLS0NCg0KPGltZyBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBtYXJnaW46IDBweCAxMDBweCAwcHggMHB4OyB3aWR0aDoyNSUiIHNyYz0ibWUucG5nIi8+IA0KDQpgYGB7ciBtZSwgZWNobz1GQUxTRSxmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICczMCUnfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoImxvZ28ucG5nIikNCmBgYA0KDQpFbWFpbCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbmJzcDs6ICBqaXJlbmUxMTNAZ21haWwuY29tIDxicj4NCkluc3RhZ3JhbSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs6IGh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vaXJlbmVnYW5pIDxicj4NClJQdWJzICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDs6IGh0dHBzOi8vcnB1YnMuY29tL2lyZW5lZ2FuaS8gPGJyPg0KRGVwYXJ0bWVudCAmbmJzcDs6IFtCdXNpbmVzcyBTdGF0aXN0aWNzXShodHRwczovL21hdGFuYXVuaXZlcnNpdHkuYWMuaWQvP2x5PWFjYWRlbWljJmM9c2IpIDxicj4NCkFkZHJlc3MgICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyA6IEFSQSBDZW50ZXIsIE1hdGFuYSBVbml2ZXJzaXR5IFRvd2VyIDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jm5ic3A7IEpsLiBDQkQgQmFyYXQgS2F2LCBSVC4xLCBDdXJ1ZyBTYW5nZXJlbmcsIEtlbGFwYSBEdWEsIFRhbmdlcmFuZywgQmFudGVuIDE1ODEwLg0KDQo8YnI+DQoNCioqKg0KDQpDb25uZWN0IHRvIE15U1FMDQpgYGB7cn0NCmxpYnJhcnkoREJJKQ0KbGlicmFyeShSTXlTUUwpDQpsaWJyYXJ5KERUKQ0KYGBgDQpgYGB7cn0NCkpvY2VseW4gPC0gZGJDb25uZWN0KE15U1FMKCksDQogICAgICAgICAgICAgICAgICAgdXNlcj0ncm9vdCcsDQogICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9JycsDQogICAgICAgICAgICAgICAgICAgZGJuYW1lPSdkYXRhcmF3JywNCiAgICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLA0KICAgICAgICAgICAgICAgICAgIHBvcnQ9MzMwNikNCmtuaXRyOjpvcHRzX2NodW5rJHNldChjb25lY3Rpb249IkpvY2VseW4iKQ0KYGBgDQoNCg0KDQojIEV4Y2VyY2lzZQ0KDQojIyBBcHBseSBMZWZ0IGpvaW4gYW5kIFJpZ2h0IGpvaW4gdG8gcmV0dXJucyBhbGwgcmVjb3JkcyBmcm9tIHRhYmxlIE9yZGVycyBhbmQgYW55IG1hdGNoaW5nIHJlY29yZHMgZnJvbSB0YWJsZSBTdXBwbGllcnMuDQoNCmBgYHtzcWwgY29ubmVjdGlvbj1Kb2NlbHluLCBvdXRwdXQudmFyPSdEYXRhMSd9DQoNClNFTEVDVCAqIA0KICBGUk9NIE9yZGVycyBPDQogICAgTEVGVCBKT0lOIE9yZGVyRGV0YWlscyBPRA0KICAgICAgT04gTy5PcmRlcklEID0gT0QuT3JkZXJJRA0KICAgICAgICBMRUZUIEpPSU4gUHJvZHVjdHMgUA0KICAgICAgICAgIE9OIE9ELlByb2R1Y3RJRCA9IFAuUHJvZHVjdElEDQogICAgICAgICAgICBMRUZUIEpPSU4gU3VwcGxpZXJzIFMNCiAgICAgICAgICAgICAgT04gUC5TdXBwbGllcklEID0gUy5TdXBwbGllcklEDQogICAgICAgICAgICAgICAgT1JERVIgQlkgTy5DdXN0b21lcklEDQpgYGANCg0KYGBge3J9DQpkYXRhdGFibGUoRGF0YTEsDQogICAgICAgICAgY2FwdGlvbiA9IGh0bWx0b29sczo6dGFncyRjYXB0aW9uKA0KICAgICAgICAgICAgc3R5bGUgPSAnY2FwdGlvbi1zaWRlOiBib3R0b207IHRleHQtYWxpZ246IGNlbnRlcjsnLA0KICAgICAgICAgICAgaHRtbHRvb2xzOjplbSgnVGFibGUgMTogU1FMIExlZnQgSm9pbi4nKSksDQogICAgICAgICAgICBleHRlbnNpb25zID0gJ0ZpeGVkQ29sdW1ucycsDQogICAgICAgICAgICBvcHRpb25zID0gbGlzdChzY3JvbGxYID0gVFJVRSwgZml4ZWRDb2x1bXMgPSBUUlVFKSAgICAgICAgICANCiAgICAgICAgICApDQoNCmBgYA0KDQojIyBDaG9vc2UgdGhlIGNvcnJlY3QgSk9JTiBjbGF1c2UgdG8gc2VsZWN0IGFsbCByZWNvcmRzIGZyb20gdGhlIHR3byB0YWJsZXMgKE9yZGVycyBhbmQgU3VwcGxpZXJzKSB3aGVyZSB0aGVyZSBpcyBhIG1hdGNoIGluIGJvdGggdGFibGVzLg0KDQpgYGB7c3FsIGNvbm5lY3Rpb249Sm9jZWx5biwgb3V0cHV0LnZhcj0nRGF0YTInfQ0KDQpTRUxFQ1QgKiANCiAgRlJPTSBPcmRlcnMgTw0KICAgIElOTkVSIEpPSU4gT3JkZXJEZXRhaWxzIE9EDQogICAgICBPTiBPLk9yZGVySUQgPSBPRC5PcmRlcklEDQogICAgICAgIElOTkVSIEpPSU4gUHJvZHVjdHMgUA0KICAgICAgICAgIE9OIE9ELlByb2R1Y3RJRCA9IFAuUHJvZHVjdElEDQogICAgICAgICAgICBJTk5FUiBKT0lOIFN1cHBsaWVycyBTDQogICAgICAgICAgICAgIE9OIFAuU3VwcGxpZXJJRCA9IFMuU3VwcGxpZXJJRA0KICAgICAgICAgICAgICAgIE9SREVSIEJZIE8uQ3VzdG9tZXJJRA0KYGBgDQoNCmBgYHtyfQ0KZGF0YXRhYmxlKERhdGEyLA0KICAgICAgICAgIGNhcHRpb24gPSBodG1sdG9vbHM6OnRhZ3MkY2FwdGlvbigNCiAgICAgICAgICAgIHN0eWxlID0gJ2NhcHRpb24tc2lkZTogYm90dG9tOyB0ZXh0LWFsaWduOiBjZW50ZXI7JywNCiAgICAgICAgICAgIGh0bWx0b29sczo6ZW0oJ1RhYmxlIDI6IFNRTCBJbm5lciBKb2luLicpKSwNCiAgICAgICAgICAgIGV4dGVuc2lvbnMgPSAnRml4ZWRDb2x1bW5zJywNCiAgICAgICAgICAgIG9wdGlvbnMgPSBsaXN0KHNjcm9sbFggPSBUUlVFLCBmaXhlZENvbHVtcyA9IFRSVUUpICAgICAgICAgIA0KICAgICAgICAgICkNCg0KYGBgDQoNCiMjIENob29zZSB0aGUgY29ycmVjdCBKT0lOIGNsYXVzZSB0byBzZWxlY3QgYWxsIHRoZSByZWNvcmRzIGZyb20gdGhlIFN1cHBsaWVycyB0YWJsZSBwbHVzIGFsbCB0aGUgbWF0Y2hlcyBpbiB0aGUgT3JkZXJzIHRhYmxlLg0KDQpgYGB7c3FsIGNvbm5lY3Rpb249Sm9jZWx5biwgb3V0cHV0LnZhcj0nRGF0YTMnfQ0KDQpTRUxFQ1QgKiANCiAgRlJPTSBPcmRlcnMgTw0KICAgIFJJR0hUIEpPSU4gT3JkZXJEZXRhaWxzIE9EDQogICAgICBPTiBPLk9yZGVySUQgPSBPRC5PcmRlcklEDQogICAgICAgIFJJR0hUIEpPSU4gUHJvZHVjdHMgUA0KICAgICAgICAgIE9OIE9ELlByb2R1Y3RJRCA9IFAuUHJvZHVjdElEDQogICAgICAgICAgICBSSUdIVCBKT0lOIFN1cHBsaWVycyBTDQogICAgICAgICAgICAgIE9OIFAuU3VwcGxpZXJJRCA9IFMuU3VwcGxpZXJJRA0KICAgICAgICAgICAgICAgIE9SREVSIEJZIE8uQ3VzdG9tZXJJRA0KYGBgDQoNCmBgYHtyfQ0KZGF0YXRhYmxlKERhdGEzLA0KICAgICAgICAgIGNhcHRpb24gPSBodG1sdG9vbHM6OnRhZ3MkY2FwdGlvbigNCiAgICAgICAgICAgIHN0eWxlID0gJ2NhcHRpb24tc2lkZTogYm90dG9tOyB0ZXh0LWFsaWduOiBjZW50ZXI7JywNCiAgICAgICAgICAgIGh0bWx0b29sczo6ZW0oJ1RhYmxlIDM6IFNRTCBSaWdodCBKb2luLicpKSwNCiAgICAgICAgICAgIGV4dGVuc2lvbnMgPSAnRml4ZWRDb2x1bW5zJywNCiAgICAgICAgICAgIG9wdGlvbnMgPSBsaXN0KHNjcm9sbFggPSBUUlVFLCBmaXhlZENvbHVtcyA9IFRSVUUpICAgICAgICAgIA0KICAgICAgICAgICkNCg0KYGBgDQoNCg==