Laden...

[erledigt] MySql Abfrage

Erstellt von dahaack vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.263 Views
D
dahaack Themenstarter:in
47 Beiträge seit 2011
vor 11 Jahren
[erledigt] MySql Abfrage

Hallo,

ich habe folgende Tabellen und Einträge gegeben:

create table t_A
(
	id int unsigned not null auto_increment,
	name char(30),
	primary key(id)
);

create table t_B
(
	id int unsigned not null auto_increment,
	aId int unsigned not null,
	score int,
	foreign key (aId) references t_A(id),
	primary key(id)
);

insert into t_A(name) values('Eintrag 1');
insert into t_A(name) values('Eintrag 2');

insert into t_B(aId,score) values(1,50);
insert into t_B(aId,score) values(2,50);
insert into t_B(aId,score) values(1,100);

Nun suche ich alle scores der Tabelle B, wenn dieser score auf jeden Eintrag in Tabelle A zeigt. In diesem Beispiel gibt es in B einen score von 50, der auf "Eintrag 1" zeigt, und einen score von 50, der auf "Eintrag 2" zeigt. Der score 100 zeigt nur auf "Eintrag 1".

Das Suchergebnis sollte in diesem Fall also eine Zeile mit dem Wert 50 sein. Ich hoffe ich habe es verständlich genug ausgedrückt.

Wie sieht diese Abfrage in SQL aus? Ist das ohne einer Funktion überhaupt möglich?

Vielen Dank!

3.430 Beiträge seit 2007
vor 11 Jahren

Hallo,

das ist doch eine ganz simple SQL Abfrage die du mit einem JOIN lösen kannst.
D.h. du joinst die beiden Tabellen über die ID miteinander.
Anschließend kannst du evtl. noch nach der ID gruppieren um dir den MIN, MAX, AVG (oder was auch immer) der Scores rauszuholen

Grüße
Michael

D
dahaack Themenstarter:in
47 Beiträge seit 2011
vor 11 Jahren

Hallo michlG,

ich denke nein. Bei dem einfachen Join wird ja auch die 100 angezeigt. Ich habe es jetz so gelöst, dass ich erst alle Werte raushole, und dann diejenigen rausschmeisse, bei denen das count(t_A.id) (mit score = [dem jeweiligen score aus der ersten Suche]) ist.

3.430 Beiträge seit 2007
vor 11 Jahren

Hallo,

hm ok. Ich habe ehrlich gesagt immer noch nicht verstanden um was es geht.
Aber Hauptsache das Problem ist gelöst 😃

Grüße
Michael