MySQL - problem z wynikami zapytań.

0

Dlaczego w wynikach zapytań dane mi sie dublują?

DROP DATABASE IF EXISTS przychodnia;
CREATE DATABASE przychodnia;
USE przychodnia;

DROP TABLE IF EXISTS miasto;
DROP TABLE IF EXISTS klient;
DROP TABLE IF EXISTS wizyta;
DROP TABLE IF EXISTS gatunek;
DROP TABLE IF EXISTS zwierze;


CREATE TABLE miasto
(
   ID_Miasto             	VARCHAR(50)             NOT NULL,
   Nazwa                    	VARCHAR(25),
   Ulica		VARCHAR(25),
   Numer		VARCHAR(10),
   Kod 		VARCHAR(6),

   CONSTRAINT miasta_ID_Miasto_pk PRIMARY KEY (ID_Miasto) 

)ENGINE = InnoDB;



CREATE TABLE klient
(
   ID_Klient               	INT           		NOT NULL,
   ID_Miasto	VARCHAR(50)  	 NOT NULL,
   Imie                       	VARCHAR(15),               
   Nazwisko              	VARCHAR(20),	
   Telefon                   	INT,
   Uwagi_Klient       	VARCHAR(255),
   
   CONSTRAINT klient_ID_Klient_pk PRIMARY KEY (ID_Klient)

)ENGINE = InnoDB;



CREATE TABLE zwierze
(
   ID_Zwierzecia      	INT                		NOT NULL,
   Gatunek		VARCHAR(20)		NOT NULL,
   CelWizyty              	VARCHAR(100),
   Uwagi_Zwierze    	VARCHAR(255),
 
   CONSTRAINT zwierze_ID_Zwierzecia_pk PRIMARY KEY (ID_Zwierzecia)

)ENGINE = InnoDB;



CREATE TABLE wizyta
(
   ID_Wizyta	INT                    	 NOT NULL,
   ID_Klient	INT		NOT NULL,
   ID_Zwierzecia  	INT                   	 NOT NULL,
   Data_Wizyty	DATE,
   Uwagi_Wizyta	VARCHAR(255)	NOT NULL,
		
   CONSTRAINT wizyta_ID_Wizyta_pk PRIMARY KEY (ID_Wizyta)

)ENGINE = InnoDB;







ALTER TABLE wizyta ADD CONSTRAINT wizyta_ID_Klient_fk FOREIGN KEY (ID_Klient) REFERENCES klient (ID_Klient);
ALTER TABLE wizyta ADD CONSTRAINT wizyta_ID_Zwierzecia_fk FOREIGN KEY (ID_Zwierzecia) REFERENCES zwierze (ID_Zwierzecia);
ALTER TABLE klient ADD CONSTRAINT klient_ID_Miasto_fk FOREIGN KEY (ID_Miasto) REFERENCES miasto (ID_Miasto);

INSERT INTO miasto(ID_Miasto, Nazwa, Kod) VALUES ('NS','Nowa Sól','67-100');
INSERT INTO miasto(ID_Miasto, Nazwa, Kod) VALUES ('BO','Bytom Odrzeński','64-100');
INSERT INTO miasto(ID_Miasto, Nazwa, Kod) VALUES ('ZG','Zielona Góra','69-100');
INSERT INTO miasto(ID_Miasto, Nazwa, Kod) VALUES ('ŻR','Żary','68-100');

INSERT INTO klient(ID_Klient, ID_Miasto, Imie, Nazwisko, Telefon, Uwagi_klient) VALUES ('1','NS', 'Marcin','Wypych', 656394823, 'OK');
INSERT INTO klient(ID_Klient, ID_Miasto, Imie, Nazwisko, Telefon, Uwagi_klient) VALUES ('2','BO', 'Wojtek',’Pająk', 556394823, 'OK');
INSERT INTO klient(ID_Klient, ID_Miasto, Imie, Nazwisko, Telefon, Uwagi_klient) VALUES ('3','ZG', 'Sebastian','Szczęsny', 756494823, 'OK');
INSERT INTO klient(ID_Klient, ID_Miasto, Imie, Nazwisko, Telefon, Uwagi_klient) VALUES ('4','ZG', 'Jakub','Talarczyk', 756494823, 'Tel. Nieaktualny!!!');
INSERT INTO zwierze(ID_Zwierzecia, Gatunek, CelWizyty, Uwagi_Zwierze) VALUES (1, ‘Kot’, 'Czyszczenie uzębienia', ‘Zabieg byl wykonywany' );
INSERT INTO zwierze(ID_Zwierzecia, Gatunek, CelWizyty, Uwagi_Zwierze) VALUES (2, ‘Pies’, 'Szczepienie przeciw wściekliźnie', ‘Zabieg byl wykonywany' );
INSERT INTO zwierze(ID_Zwierzecia, Gatunek, CelWizyty, Uwagi_Zwierze) VALUES (3, ‘Pies’, 'Odrobaczanie i badanie’, ‘Zabieg byl wykonywany' );
INSERT INTO zwierze(ID_Zwierzecia, Gatunek, CelWizyty, Uwagi_Zwierze) VALUES (4, ‘Pies’, ' Szczepienie’, ‘Pies jest agresywny' );

INSERT INTO wizyta(ID_Wizyta, ID_Klient, ID_Zwierzecia, Data_Wizyty, Uwagi_Wizyta) VALUES (1, 4, 1, '2008-05-03',’OK.’);
INSERT INTO wizyta(ID_Wizyta, ID_Klient, ID_Zwierzecia, Data_Wizyty, Uwagi_Wizyta) VALUES (2, 3, 2, '2008-04-25', ‘Potwierdzone’ );
INSERT INTO wizyta(ID_Wizyta, ID_Klient, ID_Zwierzecia, Data_Wizyty, Uwagi_Wizyta) VALUES (3, 2, 3, '2008-03-05', ‘Potwierdzone’ );
INSERT INTO wizyta(ID_Wizyta, ID_Klient, ID_Zwierzecia, Data_Wizyty, Uwagi_Wizyta) VALUES (4, 1, 4, '2008-03-22', ‘UWAGA PIES AGERSYWNY’ );


mysql> select W.Data_Wizyty, K.Nazwisko, Z.ID_Gatunek from wizyta AS w, klient A
S k, zwierze AS z where Z.ID_Zwierzecia = W.ID_Wizyta;
+-------------+-----------+------------+
| Data_Wizyty | Nazwisko  | ID_Gatunek |
+-------------+-----------+------------+
| 2008-05-03  | Wypych    | Kot        |
| 2008-04-25  | Wypych    | Pies       |
| 2008-03-05  | Wypych    | Pies       |
| 2008-03-22  | Wypych    | Pies       |
| 2008-05-03  | Pająk     | Kot        |
| 2008-04-25  | Pająk     | Pies       |
| 2008-03-05  | Pająk     | Pies       |
| 2008-03-22  | Pająk     | Pies       |
| 2008-05-03  | Szczęsny  | Kot        |
| 2008-04-25  | Szczęsny  | Pies       |
| 2008-03-05  | Szczęsny  | Pies       |
| 2008-03-22  | Szczęsny  | Pies       |
| 2008-05-03  | Talarczyk | Kot        |
| 2008-04-25  | Talarczyk | Pies       |
| 2008-03-05  | Talarczyk | Pies       |
| 2008-03-22  | Talarczyk | Pies       |
+-------------+-----------+------------+
16 rows in set (0.02 sec)

Wynika to ze złych zapytań, czy złej konstrukcji bazy?
0

Nic się nie dubluje, przecież za każdym razem różni się coś: data wizyty, nazwisko albo gatunek.

0

Czyli, zapytania są źle sformuowane?
Uczę się dopiero więc nie ogarniam tak, stąd to pytanie.

0

jezeli nie takie wyniki chciales uzyskac to tak - zapytania sa zle sformulowane. Pytanie: jakie wyniki chcesz uzyskac?

0

Kurcze... jak byście mi podpowiedzieli jak zapytać, żeby w żadnej z kolumn nie było powtórek, to by było super [browar]

0

Juz Ci Ktos napisal - zaden wiersz sie nie powtarza. Wiesz jak w ogole dziala baza relacyjna?

@down: podaj przyklad wyniku, to Ci pomozemy. Na razie to Ty nie rozumiesz nas, a my Ciebie.

0

Oka, spoko, pogrzebie sam, thx ;)

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