MySQL - problem z wynikami zapytań.

Odpowiedz Nowy wątek
Zdublowane wyniki za
2008-05-20 17:33
Zdublowane wyniki za
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?

Pozostało 580 znaków

2008-05-20 17:40
Moderator

Rejestracja: 17 lat temu

Ostatnio: 12 godzin temu

0

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

Pozostało 580 znaków

michooo
2008-05-20 18:34
michooo
0

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

Pozostało 580 znaków

2008-05-20 18:37

Rejestracja: 13 lat temu

Ostatnio: 8 lat temu

0

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


You need to learn how to walk
before you can run

Pozostało 580 znaków

michooo
2008-05-20 20:40
michooo
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]

Pozostało 580 znaków

2008-05-20 21:49

Rejestracja: 13 lat temu

Ostatnio: 8 lat temu

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.


You need to learn how to walk
before you can run

Pozostało 580 znaków

michooo
2008-05-20 22:09
michooo
0

Oka, spoko, pogrzebie sam, thx ;)

Pozostało 580 znaków

Odpowiedz

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