mysql join

eljay

Grünschnabel
Hi,

ich erstelle gerade eine Datenbank für ein Schulprojekt und leider funktioniert mein left join Befehl nicht zur Gänze.

Die erste Tabelle wäre:

create table identification (
id_nr int AUTO_INCREMENT,
name varchar(30),
date_of_arrival date,
date_of_departure date,
date_of_birth date,
species_nr int,
breed varchar(30),
sex_nr int,
color varchar(30),
hair_nr int,
tag_nr int,
characteristics varchar(50),
status_nr int,
origin_nr int,
rehomed_nr int,
date_of_disappearing date,
location_of_disappearing varchar(30),
primary key (id_nr),
foreign key (species_nr) references species(species_nr),
foreign key (sex_nr) references sex(sex_nr),
foreign key (hair_nr) references hair(hair_nr),
foreign key (tag_nr) references tag(tag_nr),
foreign key (status_nr) references status(status_nr),
foreign key (origin_nr) references addressbook(ab_nr),
foreign key (rehomed_nr) references addressbook(ab_nr));

die zweite:
create table tag(
tag_nr int AUTO_INCREMENT,
chipnr1 varchar(30),
chipnr2 varchar(30),
ringing_tel varchar(30),
ringing1 varchar(30),
ringing2 varchar(30),
ringing3 varchar(30),
ringing4 varchar(30),
eartag1 varchar(30),
eartag2 varchar(30),
primary key (tag_nr)
);

mit dem Befehl

select i.name, st.st_term, sp.sp_term, i.date_of_birth, sx.sx_term, i.breed, i.color, h.h_term, i.characteristics,
t.chipnr1, t.chipnr2, t.ringing_tel, t.ringing1, t.ringing2, t.ringing3, t.ringing4, t.eartag1, t.eartag2, i.date_of_arrival
from identification i
left join status st on i.status_nr=st.status_nr
left join species sp on i.species_nr=sp.species_nr
left join sex sx on i.sex_nr=sx.sex_nr
left join hair h on i.hair_nr=h.hair_nr
left join tag t on i.tag_nr=t.tag_nr;

gibt er mir beinahe alles richtig aus, jedoch fehlen die Werte der Spalten
ringing_tel varchar(30),
ringing1 varchar(30),
ringing2 varchar(30),
ringing3 varchar(30),
ringing4 varchar(30),
eartag1 varchar(30),
eartag2 varchar(30),

Ich verstehe nicht ganz wo das Problem liegt, da er mir ja beide Spalten chipnr1 und chipnr2 ausgibt und diese in derselben Tabelle liegen.

Aus den anderen Tabellen werden die Werte ebenfalls richtig eingefügt.

Vielleicht hat wer eine Idee? :confused:

Danke schon mal :)
 
Naja, folgende Fälle könnten vorliegen:
  1. Tabelle tag ist leer
  2. Das Feld identification.tag_nr besitzt keinen Eintrag
  3. Die Einträge in identification.tag_nr finden sich nicht in tag.tag_nr wieder
 
Naja, folgende Fälle könnten vorliegen:
  1. Tabelle tag ist leer
  2. Das Feld identification.tag_nr besitzt keinen Eintrag
  3. Die Einträge in identification.tag_nr finden sich nicht in tag.tag_nr wieder
@1 Wieso zeigt es ihm dann 2 Spalten (chipnr1 und chipn2) an?
@2+3 Ist ein LEFT JOIN, dann müssten alle Spalten von Tabelle tag leer sein

Das einzige, was ich mir vorstellen kann, ist dass in Tabelle tag tatsächlich nichts in den Feldern Ringing bis eartag steht
 
Zurück