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, 3203 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?

MFG
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 ...

MFG
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Server
Windows Nano Server 2016 Domain Join

Link von Mvinogradac zum Thema Windows Server ...

Datenbanken
gelöst Access 2010 SQL Tabellen Datensätze einfügen (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst MySQL Abfrage um JOIN erweitern (14)

Frage von datadexx zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Hardware
Laptop ins Salzwasser gefallen (18)

Frage von Marcel94 zum Thema Hardware ...

Switche und Hubs
LAG zwischen Cisco SG300 und Dlink DGS1100 herstellen - wie? (13)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...

Hardware
Lenovo Yoga 500 über angeschlossene USB Tastatur booten (13)

Frage von thomasreischer zum Thema Hardware ...

Viren und Trojaner
Wie werde ich den Mist "fanli90" wieder los? (12)

Frage von Taumel zum Thema Viren und Trojaner ...