-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexemplo2.sql
164 lines (131 loc) · 3.2 KB
/
exemplo2.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
-- EXEMPLO DE RELACIONAMENTOS
USE MASTER
GO
DROP DATABASE BANCO2;
CREATE DATABASE BANCO2
GO
USE BANCO2;
CREATE TABLE SERIALS
(
ID INTEGER,
CODIGO VARCHAR(MAX)
)
INSERT INTO SERIALS
VALUES (1, '97491874832789437904238489827408239')
INSERT INTO SERIALS
VALUES (2, '12348978578238578937583728958942378')
CREATE TABLE GENEROS
(
ID INTEGER,
NOME VARCHAR(50),
DESCRICAO TEXT
)
INSERT INTO GENEROS (ID, NOME)
VALUES (1, 'Simulador')
INSERT INTO GENEROS
VALUES (2, 'Esporte', 'É UM SPORT')
INSERT INTO GENEROS
VALUES (3, 'RPG', 'ROLE PLAYING GAME')
INSERT INTO GENEROS (ID, NOME)
VALUES (4, 'Battle Royale')
CREATE TABLE JOGOS
(
ID INTEGER,
SERIAL_ID INTEGER,
NOME VARCHAR(100),
VALOR DECIMAL(28, 2),
DATA_INCLUSAO DATETIME,
DATA_COMPRADO DATETIME,
DESCRICAO TEXT
)
INSERT INTO JOGOS (ID, NOME, VALOR, DATA_INCLUSAO, DATA_COMPRADO, DESCRICAO, SERIAL_ID)
VALUES(1, 'PES', 50.00, GETDATE(), NULL, 'O melhor jogo de futebol.', 1)
INSERT INTO JOGOS
VALUES(2, 2, 'LOL', 200.00, GETDATE(), NULL, 'O jogo mais famoso do mundo.')
INSERT INTO JOGOS
VALUES(3, NULL, 'Clash Royale', 0.00, GETDATE(), NULL, 'O jogo mais legal de Battle Royale.')
CREATE TABLE JOGO_GENEROS
(
JOGO_ID INTEGER,
GENERO_ID INTEGER
)
INSERT INTO JOGO_GENEROS (JOGO_ID, GENERO_ID)
VALUES (1, 1)
INSERT INTO JOGO_GENEROS
VALUES (1, 2)
INSERT INTO JOGO_GENEROS
VALUES (2, 3)
INSERT INTO JOGO_GENEROS
VALUES (3, 4)
INSERT INTO JOGO_GENEROS
VALUES (3, 1)
-- 1 <-> 0,1
SELECT
*
FROM
JOGOS
LEFT JOIN SERIALS ON
JOGOS.SERIAL_ID = SERIALS.ID
-- 1 <-> 99999
-- 99999 <-> 1
SELECT
JOGOS.NOME AS JOGO_NOME
, GENEROS.NOME AS GENERO_NOME
FROM
JOGOS
INNER JOIN JOGO_GENEROS ON
JOGO_GENEROS.JOGO_ID = JOGOS.ID
JOIN GENEROS ON
GENEROS.ID = JOGO_GENEROS.GENERO_ID
SELECT Main.NOME,
LEFT(Main.GENEROS,Len(Main.GENEROS)-1) As "GENEROS"
FROM
(
SELECT DISTINCT JOGOS_2.NOME,
(
SELECT GENEROS.NOME + ', ' AS [text()]
FROM
JOGO_GENEROS
JOIN GENEROS ON
GENEROS.ID = JOGO_GENEROS.GENERO_ID
JOIN JOGOS ON
JOGOS.ID = JOGO_GENEROS.JOGO_ID
WHERE JOGO_GENEROS.JOGO_ID = JOGO_GENEROS_2.JOGO_ID
ORDER BY JOGOS.NOME
FOR XML PATH ('')
) [GENEROS]
FROM
JOGO_GENEROS JOGO_GENEROS_2
JOIN JOGOS JOGOS_2 ON
JOGOS_2.ID = JOGO_GENEROS_2.JOGO_ID
) [Main]
-- 99999 <-> 99999
CREATE TABLE PATROCINADORES
(
ID INTEGER,
NOME VARCHAR(50)
)
INSERT INTO PATROCINADORES
VALUES (1, 'ADIDAS')
INSERT INTO PATROCINADORES
VALUES (2, 'NIKE')
CREATE TABLE JOGOS_PATROCINADORES
(
JOGO_ID INTEGER,
PATROCINADOR_ID INTEGER
)
INSERT INTO JOGOS_PATROCINADORES
VALUES (1, 1)
INSERT INTO JOGOS_PATROCINADORES
VALUES (1, 2)
INSERT INTO JOGOS_PATROCINADORES
VALUES (2, 2)
SELECT
JOGOS.NOME
, PATROCINADORES.NOME
FROM
JOGOS
LEFT JOIN JOGOS_PATROCINADORES ON
JOGOS_PATROCINADORES.JOGO_ID = JOGOS.ID
LEFT JOIN PATROCINADORES ON
PATROCINADORES.ID = JOGOS_PATROCINADORES.PATROCINADOR_ID