Wątek przeniesiony 2017-06-27 15:17 z Bazy danych przez Patryk27.

Problem z powtarzaniem się rekordów

0

screenshot-20170627165255.png

Witam tworzę tabelę jestem totalnie zielony póki co w sql , kilkudniowe doświadczenie. Czemu wyświetlają mi się wszystkie dostępne statystyki do kazdej bitwy ? a nie te które rzeczywiście powinny być ... Wiem że w kodzie dużo do poprawy , ale nie wiem jak rozwiązać ten problem.

Create table BitwySwiata (
ID bigint not null,
NAZWABITWY varchar(40),
DATABITWY date not null,
PANSTWO Varchar(40) ,
GENERAL Varchar(40),
MIEJSCEBITWY Varchar(40),
WYNIK Varchar(40),
Constraint id_BitwySwiata_klucz primary key (ID));

INSERT INTO BitwySwiata (ID,NAZWABITWY,DATABITWY,MIEJSCEBITWY,WYNIK) Values (1,'BITWA POD GRUNWALDEM','1410-07-15','Pola pod Grunwaldem','zwyciestwo polaczonych sil polsko-litewskich');
INSERT INTO BitwySwiata (ID,NAZWABITWY,DATABITWY,MIEJSCEBITWY,WYNIK) Values (2,'ODSIECZ WIEDENSKA','1683-09-12','WIEDEN','wygrana koalicji antytureckiej');
INSERT INTO BitwySwiata (ID,NAZWABITWY,DATABITWY,MIEJSCEBITWY,WYNIK) Values (3,'BITWA POD WATERLOO','1815-06-16','Waterloo','zwyciestwo sprzymierzonych');
INSERT INTO BitwySwiata (ID,NAZWABITWY,DATABITWY,MIEJSCEBITWY,WYNIK) Values (4,'BITWA NAD MARNA','1914-09-05','Okolice Paryza nad Marna','zwyciestwo Ententy');

Create table StronyKonfliktow (
ID bigint not null,
PANSTWO varchar(40),
GENERAL varchar (40),
Constraint id_StronyKonfliktow_klucz primary key (ID) );

Insert into StronyKonfliktow (ID,PANSTWO,GENERAL) VALUES (1,'Krzyzacy','Ulrich von Jungingen');
Insert into StronyKonfliktow (ID,PANSTWO,GENERAL) VALUES (2,'Polska','Wladyslaw II Jagiello');
Insert into StronyKonfliktow (ID,PANSTWO,GENERAL) VALUES (3,'Litwa','Witold Kiejstutowicz');
Insert into StronyKonfliktow (ID,PANSTWO,GENERAL) VALUES(4,'Polska','Jan III Sobieski');
Insert into StronyKonfliktow (ID,PANSTWO,GENERAL) VALUES (5,'Imperium Osmanskie','Kara Mustafa');
Insert into StronyKonfliktow (ID,PANSTWO,GENERAL) VALUES(6,'Cesarstwo Francuskie','Napoleon I Bonaparte');
Insert into StronyKonfliktow (ID,PANSTWO,GENERAL) VALUES(7,'Zjednoczone Krolestwo Prusy','Arthur Wellesley');
Insert into StronyKonfliktow (ID,PANSTWO,GENERAL) VALUES(8,'Entanta','Joseph Joffre');
Insert into StronyKonfliktow (ID,PANSTWO,GENERAL) VALUES(9,'Cesarstwo Niemieckie','Helmut Von Moltke');

Create table Statystyki (
ID bigint not null,
STRONAKONFLIKTU varchar(40),
LICZEBNOSCARMII BIGINT,
ZABICIIRANNI BIGINT,
Constraint id_Statystyki_klucz primary key(ID)
);

Insert into Statystyki (ID,STRONAKONFLIKTU,LICZEBNOSCARMII,ZABICIIRANNI) VALUES (1,'Krzyzacy',15000,8000);
Insert into Statystyki (ID,STRONAKONFLIKTU,LICZEBNOSCARMII,ZABICIIRANNI) VALUES (2,'Polska',20000,1500);
Insert into Statystyki (ID,STRONAKONFLIKTU,LICZEBNOSCARMII,ZABICIIRANNI) VALUES (3,'Litwa',10000,1500);
Insert into Statystyki (ID,STRONAKONFLIKTU,LICZEBNOSCARMII,ZABICIIRANNI) VALUES (4,'Polska',70000,15000);
Insert into Statystyki (ID,STRONAKONFLIKTU,LICZEBNOSCARMII,ZABICIIRANNI) VALUES (5,'Imperium Osmanskie',300000,24000);
Insert into Statystyki (ID,STRONAKONFLIKTU,LICZEBNOSCARMII,ZABICIIRANNI) VALUES (6,'Cesarstwo Francuskie',73000,25000);
Insert into Statystyki (ID,STRONAKONFLIKTU,LICZEBNOSCARMII,ZABICIIRANNI) VALUES (7,'Zjednoczone Krolestwo Prusy',127000,22000);
Insert into Statystyki (ID,STRONAKONFLIKTU,LICZEBNOSCARMII,ZABICIIRANNI) VALUES (8,'Entanta',1937000,455000);
Insert into Statystyki (ID,STRONAKONFLIKTU,LICZEBNOSCARMII,ZABICIIRANNI) VALUES (9,'Cesarstwo Niemieckie',1176000,372000);
0

Poczytaj o poprawnym joinowaniu zamiast zgadywać składnię.

0

Czyli samo create table jest okej a złe jest zapytanie tak :) ?

0

Nie do końca - w jaki sposób chcesz powiązać tabelę statystyki z bitwami świata? Nie mają nic wspólnego ze sobą.

Btw, wyłącz caps locka - znacznie lepiej czyta się:

CREATE TABLE bitwy (
	id BIGINT NOT NULL,
	nazwa VARCHAR(40),
	data DATE NOT NULL,
	panstwo VARCHAR(40) ,
	general VARCHAR(40),
	miejsce VARCHAR(40),
	wynik VARCHAR(40),
	
	CONSTRAINT primary_key PRIMARY KEY (id)
);
0

Czyli chodzi o klucze tak ? z nimi mam największy problem.

0

Obecnie statystyki nie mają nic wspólnego z bitwami. Musisz obie te tabele powiązać, dodaj id bitwy dobtabeli ze statystykami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1