Karbrüggen
Grünschnabel
Hallo,
ich habe ein Problem mit einer MySQL-Abfrage: und zwar komme ich nicht mit JOINs zurecht. Mein Englisch ist auch nicht so gut, dass ich die Dev-Seiten bei mysql.com vernünftig erfassen könnte... Aber vielleicht könnt ihr mir helfen.
Ich habe diese beiden Tabellen angelegt:
und
Zweck ist eine kleine Büchereiverwaltung für unsere Bibliothek (bzw. die meiner Zivildienststelle)...
Hierbei sollen `bestand`.`ausgeliehen_an` und `bewohner`.`id` miteinander in Verbindung gebracht werden, und am Ende eine Liste mit ausgeliehen Büchern/CDs/... mit Titel/Autor und eben dem Namen dessen, der es sich ausgeliehen hat, ausgegeben werden. Meine bisherige Lösung dafür sieht so aus:
Wirklich schön ist das nun nicht (performant schon gar nicht, dafür aber fehleranfällig), darum möchte ich mich nun mit JOINs beschäftigen. Nur: Davon hab ich keine Ahnung. Ergooglete Tutorials waren meist auf englisch, bzw. dt.-sprachige nicht sonderlich ergiebig. Gibt es hier jemanden, der mir so einen JOIN erläutern kann?
Vielen Dank
Dominik
Eben hab ich hier im Forum was von OUTER bzw. INNER JOINs gelesen - wo liegt dabei der Unterschied zum normalen JOIN?
ich habe ein Problem mit einer MySQL-Abfrage: und zwar komme ich nicht mit JOINs zurecht. Mein Englisch ist auch nicht so gut, dass ich die Dev-Seiten bei mysql.com vernünftig erfassen könnte... Aber vielleicht könnt ihr mir helfen.
Ich habe diese beiden Tabellen angelegt:
SQL:
CREATE TABLE `bestand` (
`id` int(10) unsigned NOT NULL auto_increment,
`typ` enum('Buch','Heft/Magazin','CD','Kassette','Spiel','Sonstiges') collate latin1_general_ci NOT NULL default 'Sonstiges',
`titel` varchar(255) collate latin1_general_ci NOT NULL,
`autor` varchar(255) collate latin1_general_ci default NULL,
`text` text collate latin1_general_ci,
`genre` varchar(255) collate latin1_general_ci default NULL,
`ausgeliehen` enum('ja','nein') collate latin1_general_ci NOT NULL default 'nein',
`ausgeliehen_an` smallint(5) unsigned default '0',
`rueckgabe` date default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
und
SQL:
CREATE TABLE `bewohner` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`name` varchar(255) collate latin1_general_ci NOT NULL,
`wohnbereich` varchar(255) collate latin1_general_ci NOT NULL,
`ausleihdauer` tinyint(3) unsigned NOT NULL default '14',
`bemerkungen` text collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Zweck ist eine kleine Büchereiverwaltung für unsere Bibliothek (bzw. die meiner Zivildienststelle)...
Hierbei sollen `bestand`.`ausgeliehen_an` und `bewohner`.`id` miteinander in Verbindung gebracht werden, und am Ende eine Liste mit ausgeliehen Büchern/CDs/... mit Titel/Autor und eben dem Namen dessen, der es sich ausgeliehen hat, ausgegeben werden. Meine bisherige Lösung dafür sieht so aus:
- ausgeliehene Einträge mit bestand.ausgeliehen='ja' holen
- bestand.ausgeliehen_an herausfiltern
- bewohner.id und bewohner.name abfragen
- bestand.ausgeliehen_an und bewohner.id verknüpfen, mit bewohner.name verbinden
- Daten ausgeben
Wirklich schön ist das nun nicht (performant schon gar nicht, dafür aber fehleranfällig), darum möchte ich mich nun mit JOINs beschäftigen. Nur: Davon hab ich keine Ahnung. Ergooglete Tutorials waren meist auf englisch, bzw. dt.-sprachige nicht sonderlich ergiebig. Gibt es hier jemanden, der mir so einen JOIN erläutern kann?
Vielen Dank
Dominik
Eben hab ich hier im Forum was von OUTER bzw. INNER JOINs gelesen - wo liegt dabei der Unterschied zum normalen JOIN?