Do you speak SQL … (Teil 2)

In Teil 1 hatte ich die Abfragen immer auf eine Tabelle beschränkt. Die eigentliche Stärke von relationalen Datenbanken ist aber die Verknüpfung unterschiedlicher Tabellen, sogenannter JOINs.

Ich hatte mal einen kleinen Beitrag über die Galaxie NGC6166 in Abell2199 verfasst. Mal sehen, wie man die Verbindung zwischen den beiden Katalogen ngc2000 und Abell hinbekommt:

SELECT n.name, n.ra, n.dec, a.num
FROM abell AS a
JOIN ngc2000 AS n
ON abs(n.ra-a.ra)<0.7
WHERE abs(n.dec-a.dec)<0.7
AND aco=2199
ORDER BY  a.num;

geht doch! 2 Galaxien NGC6158 und die gefragte NGC6166:

6158 246.925 39.383 2199
6166 247.15    39.55   2199

Mehr zum Thema JOIN

Wichtig: Nie das ON vergessen, sonst gibt es bei großen Katalogen Terra-Bytes an Output!!!

Besonders viele Galaxien finden sich im PGC-Kataog:

SELECT count(*) FROM pgc;

983251

mal sehen wieviele etwa zu Abell2199 (Umfeld +/-0.7°)  gehören und welchem morphologischen Typ sie angehören:

SELECT p.ra, p.dec, p.num, p.mtype, a.aco
FROM abell AS a
JOIN pgc AS p
ON abs(p.ra-a.ra)<0.7
WHERE a.aco=2199 AND abs(p.dec-a.dec)<0.7 ;

aha, viele über die ganze Hubblepalette.

sql7

SELECT count(*)
FROM abell AS a
JOIN pgc AS p
ON abs(p.ra-a.ra)<0.7
WHERE a.aco=2199 AND abs(p.dec-a.dec)<0.7;

macht 169.

Mal eine Verbindung zweier Kataloge ohne JOIN. Im maxBCG-Katalog  sind ngal und nr200 definiert als

91- 93 I3 — Ngal Detection richness
95- 97 I3 — NR200 Scaled richness (1)
———————————————————–
Note (1): the scaled richness is the number of E/S0 member galaxies
brighter than 0.4L* and within R_200_ of the cluster center,
R_200_ being the radius within which the density of galaxies with
-24mag<=M_r_<=-16mag is 200 times the mean density of such galaxies.
———————————————————–

Welcher Haufen hat hier die größte NR200?

SELCT ra,dec,max(nr200) FROM maxbcg;

Antwort: 239.58334   27.233419   188

Ist  der Haufen im Abell-Katalog, wenn ja, mit welcher Nummer?

SELECT * FROM abell WHERE abs(ra-(SELECT  ra FROM maxbcg WHERE nr200=188))<0.01;

Antwort: 2142 II 89 239.575 27.217 15h58.3m +27d13m 44.2 48.7 0.0899 2 4 16.0

Es ist dieses Monster : Abell 2142

Man hätte natürlich auch die 239.58334 statt (SELECT  ra FROM maxbcg WHERE nr200=188) einfügen können …

Zum Abschluß von Teil 2 noch etwas fieseres. Wie verteilen sich die Galaxien aus dem NGC-Katalog in Rektaszension?

  SELECT round(ra/15) AS bins, count(*) AS N FROM ngc2000 WHERE type LIKE ‘%Gx%’ GROUP BY bins ORDER BY bins;

ra ist in der Tabelle in Grad angegeben, weshalb durch 15 geteilt wird um nicht zu viele Bins zu bekommen.

sql8

Das gibt ein Histogramm mit einem Maximum bei der 12.-13. Stunde, obwohl die 24.0te Stunde stört. (SQLite kennt nur round). Wie man das besser macht folgt in Teil 3.

Man kann SQLite-Datenbanken auch auf den Webserver legen und aus dem Firefox die Abfragen machen.