php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.04.2009, 13:27  
Neuer Benutzer
 
Registriert seit: 28.04.2009
Beiträge: 3
lordnikonkg befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Komplexer SELECT (in relationalem Datenbankdesign) + Literaturempfehlung

Hallo alle Zusammen,
dann will ich hier mal meinen ersten Beitrag starten

Seit mehreren Tagen plage ich mich mit einer, für meine Verhältnisse, komplexen Abfrage in meiner mysql Datenbank herum. Leider ist in der von mir erworbenen Literatur das Thema Tabellen Joinen nicht so ausführlich behandelt, um es entsprechend erschließen zu können.
Aber zuerst zum Problem:

Die Abfrage bezieht sich auf drei Tabellen der Datenbank : 1.) benutzer, 2.) events, 3.) event_handler
Das Datenbankdesign ist relational, d.h. der Aufbau der einzelnen Tabellen ist wiefolgt:
1.) ID, Name, Vorname, E-Mail, usw.
2.) ID, Eventname, Datum, Beschreibung, usw.
3.) ID, event_ID(Sekundärschlüssel von [2]), benutzer_ID(Sekundärschlüssel von [1]

Nimmt also ein Benutzer an einem Event teil, wird er in den event_handler mit benutzer_id zur entsprechenden event_id eingetragen.

Die gesuchte Abfrage soll nun Name, Vorname, ID von den Benutzern selektieren, die noch NICHT im event_handler, bei gegebener Event_ID, eingetragen sind, sozusagen die Benutzer, die keiner leiden kann

Habe mir da nun lange Zeit den Kopf drüber zerbrochen und hoffe, dass mir hier jemand weiterhelfen kann.

-------------------

Des weiteren ist die Frage nach einer guten Literaturempfehlung für mysql, in der umfangreich vom Einstieg bis zum anspruchsvollen Programmieren alles abgedeckt wird. Kann gerne 1000+ Seiten enthalten, das schreckt mich nicht ab.

Dann auf gute Zusammenarbeit
lordnikonkg ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.04.2009, 00:06  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Eine Möglichkeit wäre so etwas:

Code:
SELECT *
FROM benutzer AS b
WHERE NOT EXISTS (
    SELECT *
    FROM event_handler AS eh 
    WHERE eh.benutzer_ID = b.benutzer_ID AND eh.event_ID = <gegebene event_ID>
)
Dafür brauchst du die Eventtabelle gar nicht und mit JOINs kannst du das eigentlich nicht lösen denn bei JOINs selektierst du ja Daten die irgendwie "gejoint" also zusammengeführt werden ... du willst aber nur Daten die eben NICHT in der anderen Tabelle stecken.

Wobei du allerdings aufpassen musst ist hier die Performance. Da du hier für jeden User sogesehen einen Subquery hast könnte das eben eine Performancebremse bei sehr vielen Usern werden. Ich hab jetzt keine Ahnung wie das intern optimiert wird, da müsste man halt dann in entsprechenden Fällen vielleicht mal den Optimizer anschauen aber ich glaube nich dass da sehr viel optimiert wird.

Als Buch habe ich eigentlich nur eines gelesen, dieses kann ich allerdings auch weiter empfehlen. Allerdings vorneweg das ganze ist wenig auf SQL fixiert sondern geht eher auf viele Aspekte von relationalen Datenbanken ein. Aber hat eben auch ein Kapitel über SQL mit eigentlich allem was man dafür braucht. Basiert aber nicht auf MySQL sondern auf DB2 und Oracle aber die Syntax ist ja großteils gleich und bestimmte Schlüsselwörter muss man dann eben nachschlagen.

Datenbanksysteme von Alfons Kemper
Ich hab eine Vorlesung zu Datenbanken bei Prof. Kemper gehört und das Buch war so gesehen begleitend zur Vorlesung. Eigentlich sehr gut aufgebaut, allerdings befasst es sich nicht nur mit SQL sondern auch viel um relationale Algebra, aufbau von relationalen Datenbanken, Normalisierung von Datenbanken, eigentlich alles wesentliche in SQL, interne Speicherung von Datenbanken, Inidzes (B+-Baum, Hashes etc) und geht dann weiter zu Algorithmen wie Datenbanken bestimmte Befehle ausführen also z.B. JOINs (da gibt es diverse Möglichkeiten zwei Mengen zu mergen ... daher jenach Problemstellung ein anderer Algo) und dann noch ein paar Kapitel zur Optimierung von Anfragen, Transaktionen und verteilte Systeme.

Ich find das Buch recht angenehm zu lesen. Zusätzlich gibt es noch ein Übungsbuch das entsprechende Übungen bereitstellt die man dann zum Buch machen kann.
Übungsbuch von Alfons Kemper

Geändert von Flor1an (29.04.2009 um 00:10 Uhr).
Flor1an ist offline   Mit Zitat antworten
Alt 29.04.2009, 00:34  
Neuer Benutzer
 
Registriert seit: 28.04.2009
Beiträge: 3
lordnikonkg befindet sich auf einem aufstrebenden Ast
Standard

Hey Florian,

erstmal vielen Dank für die Hilfe!
Die Eventtabelle war nur zur näheren Erläuterung des Problems, wäre ja sonst bisschen langweilig

Das Buch gibt es sogar bei uns in der Lehrbuchsammlung. Werde ich gleich morgen mal ausleihen und einen Blick reinwerfen
lordnikonkg ist offline   Mit Zitat antworten
Alt 29.04.2009, 09:44  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ja wenn dus ausleihen kannst umso besser. Aber nicht von der relationalen Algebra abschrecken lassen Kannst ja mal nen Blick drauf werfen um mal einen Mathematischen Zusammenhang zu haben.
Flor1an ist offline   Mit Zitat antworten
Alt 29.04.2009, 23:10  
Neuer Benutzer
 
Registriert seit: 28.04.2009
Beiträge: 3
lordnikonkg befindet sich auf einem aufstrebenden Ast
Standard

Habe heute Abend mal einen Blick in das Buch geworfen und muss sagen, dass es wirklich ein enormes Grundwissen zum Thema Datanbanksysteme vermittelt. Allein im Hinblick auf Optimierung bzw. den grundlegenden Aufbau (relationale Schemata) einer Datenbank finde ich es sehr interessant.

Zitat:
Zitat von Flor1an Beitrag anzeigen
Kannst ja mal nen Blick drauf werfen um mal einen Mathematischen Zusammenhang zu haben.
Hab zur Zeit leider relativ wenig Zeit, deshalb wird der mathematische Hintergrund wohl erstmal auf der Strecke bleiben Komme ungefähr eine Stunde am Tag dazu bisschen was an meiner Homepage zu werkeln, aber bin schon mal froh, dass es so langsam mit den Datenbankabfragen hinhaut

Geändert von lordnikonkg (29.04.2009 um 23:13 Uhr).
lordnikonkg ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL select fehlerhafte Resultate. Ist PHP 64 Bit das Problem? peterw Server, Hosting und Workstations 6 21.04.2009 09:19
[Erledigt] Tabelle erstellt - SELECT Abfrage nicht möglich Lightware Datenbanken 14 07.03.2009 17:31
miltiple select formula mike12 PHP Tipps 2009 5 10.02.2009 00:20
[Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) dr.e. Datenbanken 4 15.06.2008 19:54
[Erledigt] Mysql Insert Select + Concat Hu5eL Datenbanken 14 10.06.2008 10:39
[gelöst] SELECT COUNT(*) FROM SUBSELECT braucht ewig! stefanjann Datenbanken 3 25.02.2008 08:44
Select - Preselect simsalabim HTML, Usability und Barrierefreiheit 6 22.11.2007 20:21
Select soll Seite akualisieren und Felderinhalte übernehmen marcelglaeser HTML, Usability und Barrierefreiheit 7 13.10.2006 03:08
SELECT AS geht bei AVG net cyberholic Datenbanken 0 04.05.2006 09:43
[JavaScript] Event Handler in form select - Syntax? winfo_cologne HTML, Usability und Barrierefreiheit 5 29.03.2006 16:47
Probleme mit Inner Select Datenbanken 0 19.10.2005 15:22
selbst gelöst! Select <option> kleines Problem Dropdow 24bits PHP Tipps 2005-2 0 15.10.2005 19:19
[Erledigt] SELECT in SELECT PHP Tipps 2005 5 06.04.2005 22:30
[Erledigt] 2 mal select 1 form PHP-Fortgeschrittene 1 01.09.2004 20:13
selektierter wert in select box anzeigen PHP Tipps 2004 6 30.08.2004 13:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
komplexe select abfrage, komplexe select, oracle datenbankdesign id, mysql komplexe joins, php komplexe datenbankabfragen, mysql komplexe select, komplexe datenbankabfragen übungen, tabellen in verteilten db selektieren, php datanbanksystem, oracle komplexe abfragen, komplexe select abfragen üben, \select in select\ db2, komplexe datenbank mehrere select, datenbankdesign buch, datenbankabfrage innere selection, sql datenbank design, gutes buch für datenbankdesign, select mysql nachschlagen normalisieren, datenbankdesign für forum mysql performance, optimierung in der relationalen algebra tutorial

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum