Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

JOIN über 5 Tabellen

Frage Entwicklung Datenbanken

Mitglied: hakkbart

hakkbart (Level 1) - Jetzt verbinden

20.04.2012 um 22:04 Uhr, 3195 Aufrufe, 5 Kommentare

Es sollen 5 Tabellen mit einem JOIN verknüpft werden.

Abend ...

Ich stehe vor einem mir unlösbarem Problem mit einer Datenbankabfrage.

In einem Feedbackportal können User Fragebögen beantworten. Diese setzen sich aus verschiedenen Fragen-Antwort-Kombinationen, aus einer Tabelle "Fragenpool" und "Antwortenpool", zusammen.
Jeder Nutzer ist dabei einer Klasse zugeordnet, welcher wiederum verschiedene Fragebögen zugeordnet werden können.

Folgende Tabellen sind vorhanden:

t_user
t_klasse
t_fragebogen
t_fragenkatalog
t_antwortkatalog
t_frage_antwort
t_antwort_user

Mir ist nicht ganz klar wie ich hier ansetzen muss.
Die für den User angelegten bzw. freigeschalteten Fragebögen bekomm ich abgefragt, wie ich dann allerdings weiter vorgehe ...

Hat evtl- jemand nen Tipp wie ich das sinnvoll angehe?

Mit freundlichen Grüßen
Mitglied: scan5415
20.04.2012 um 22:33 Uhr
Abend,

Was für eine Datenbank verwendest du? -> Ich gehe jetzt einfach mal von einer MS SQL DB aus.

In einem Feedbackportal können User Fragebögen beantworten. Diese setzen sich aus verschiedenen Fragen-Antwort-Kombinationen, aus einer Tabelle "Fragenpool" und "Antwortenpool", zusammen.
Leider verstehe ich den ersten Satz nicht. Wie setzt sich das genau zusammen?

Jeder Nutzer ist dabei einer Klasse zugeordnet, welcher wiederum verschiedene Fragebögen zugeordnet werden können.
01.
SELECT *  
02.
FROM t_user T0 
03.
INNER JOIN t_klasse T1 ON T0.klasseID = T1.klasseID 
04.
INNER JOIN t_fragebogen T2 ON T1.klasseID = T2.klasseID
Das sollte so schnell, schnell funktionieren (habe es nicht getestet) oder dich auf eine richte Spur bringen.

Grüsse

scan
Bitte warten ..
Mitglied: pi314
23.04.2012 um 20:52 Uhr
Abend..

zwar wird es hier nicht essentiell sein, dennoch wäre es interessant, welche DB du verwendest, da geb' ich scan5415 recht.
Zum anderen sind die Informationen etwas spärlich.

  • Wie sind denn die Tabellen aufgebaut?
  • Welche Spalten / FKs gibt's?
  • Oder sind das Tabellen von irgendeinen Framework?

Du hast nur Tabellennamen aufgelistet und in Prosa ein paar Zusammenhänge beschrieben.
Aufgrund deiner Erklärung tippe ich mal:

  1. t_user hat eine 1:1 Beziehung zu t_klasse
  2. t_klasse hat 0:n Beziehung zu t_fragebogen
  3. t_frage_antwort ist die Verknüpfungstabelle für die n:m Beziehung zwischen t_fragenkatalog und t_antwortkatalog

Wie man die nun genau verknüpft, könnte man mit Hilfe eines Datenmodells sagen. Zumindest der Tabellenaufbau würde schon mal weiterhelfen.


so long,
pi314
Bitte warten ..
Mitglied: hakkbart
24.04.2012 um 20:38 Uhr
ich hoffe das bringt ein wenig licht ins dunkel ...

http://www.pic-upload.de/view-13915280/db.jpg.html
Bitte warten ..
Mitglied: pi314
25.04.2012 um 11:41 Uhr
Hi,

wenn ich's richtig verstanden habe, willst du die Fragen und Antworten für einen User ausgeben.
Probier' doch mal folgendes:
select u.vorname, u.name 
     , f.frname 
     , fr_teil1.frage1, fr_teil1.antwort1 
     , fr_teil2.frage2, fr_teil2.antwort2 
     , fr_teil3.frage3, fr_teil3.antwort3 
     , fr_teil4.frage4, fr_teil4.antwort4 
     , fr_teil5.frage5, fr_teil5.antwort5 
     , fr_teil6.frage6, fr_teil6.antwort6 
     , fr_teil7.frage7, fr_teil7.antwort7 
     , fr_teil8.frage8, fr_teil8.antwort8 
  from t_user u 
       join t_antwortuser au on (au.user_id = u.id) 
       join t_fragebogen f on (f.id = au.fragebogen_id) 
       join (select fk1.frage as frage1, ak1.antwort as antwort1, fa1.id as fa1ID 
               from t_fragekatalog fk1 
                    join t_frage_antwort fa1 on (fa1.fragekatalog_id = fk1.id) 
                    join t_anwortkatalog ak1 on (ak1.id = fa1.antwort_id)) fr_teil1 on (fr_teil1.fa1ID = f.teil1) 
       join (select fk2.frage as frage2, ak2.antwort as antwort2, fa2.id as fa2ID 
               from t_fragekatalog fk2 
                    join t_frage_antwort fa2 on (fa2.fragekatalog_id = fk2.id) 
                    join t_anwortkatalog ak2 on (ak2.id = fa2.antwort_id)) fr_teil2 on (fr_teil2.fa1ID = f.teil2) 
       join (select fk3.frage as frage3, ak3.antwort as antwort3, fa3.id as fa3ID 
               from t_fragekatalog fk3 
                    join t_frage_antwort fa3 on (fa3.fragekatalog_id = fk3.id) 
                    join t_anwortkatalog ak3 on (ak3.id = fa3.antwort_id)) fr_teil3 on (fr_teil3.fa1ID = f.teil3) 
       join (select fk4.frage as frage4, ak4.antwort as antwort4, fa4.id as fa4ID 
               from t_fragekatalog fk4 
                    join t_frage_antwort fa4 on (fa4.fragekatalog_id = fk4.id) 
                    join t_anwortkatalog ak4 on (ak4.id = fa4.antwort_id)) fr_teil4 on (fr_teil4.fa1ID = f.teil4) 
       join (select fk5.frage as frage5, ak5.antwort as antwort5, fa5.id as fa5ID 
               from t_fragekatalog fk5 
                    join t_frage_antwort fa5 on (fa5.fragekatalog_id = fk5.id) 
                    join t_anwortkatalog ak5 on (ak5.id = fa5.antwort_id)) fr_teil5 on (fr_teil5.fa1ID = f.teil5) 
       join (select fk6.frage as frage6, ak6.antwort as antwort6, fa6.id as fa6ID 
               from t_fragekatalog fk6 
                    join t_frage_antwort fa6 on (fa6.fragekatalog_id = fk6.id) 
                    join t_anwortkatalog ak6 on (ak6.id = fa6.antwort_id)) fr_teil6 on (fr_teil6.fa1ID = f.teil6) 
       join (select fk7.frage as frage7, ak7.antwort as antwort7, fa7.id as fa7ID 
               from t_fragekatalog fk7 
                    join t_frage_antwort fa7 on (fa7.fragekatalog_id = fk7.id) 
                    join t_anwortkatalog ak7 on (ak7.id = fa7.antwort_id)) fr_teil7 on (fr_teil7.fa1ID = f.teil7) 
       join (select fk8.frage as frage8, ak8.antwort as antwort8, fa8.id as fa8ID 
               from t_fragekatalog fk8 
                    join t_frage_antwort fa8 on (fa8.fragekatalog_id = fk8.id) 
                    join t_anwortkatalog ak8 on (ak8.id = fa8.antwort_id)) fr_teil8 on (fr_teil8.fa1ID = f.teil8) 
 order by u.id, f.id;
greetz, pi314
Bitte warten ..
Mitglied: hakkbart
26.04.2012 um 17:43 Uhr
vielen dank ...das is ja mal der knaller ...

Mit freundlichen Grüßen
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell Domain Join (2)

Frage von Patrick-IT zum Thema Batch & Shell ...

CSS
gelöst CSS width in Outlook 2013 bei Tabellen ohne Funtion, warum? (3)

Frage von Pago159 zum Thema CSS ...

Datenbanken
gelöst SQL Multiple Join auf selbe ID (3)

Frage von Memo66 zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...