Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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

Datenbankabfrage über 3 Tabellen

Frage Entwicklung Datenbanken

Mitglied: soa

soa (Level 1) - Jetzt verbinden

15.11.2007, aktualisiert 15:59 Uhr, 3166 Aufrufe, 3 Kommentare

Hallo,

ich benötige eine Starthilfe zu einer DB Abfrage über MySql

Tabelle1 : ID , Name, Beschreibung

Tabelle2 ID, Name, Beschreibung


tabelle1totabelle2 id_tab1 , id_tab2


Nun möchte ich alle Daten der Tabelle 1 haben. Alle .

Rechts neben ID , Name, Beschreibung...

sollen alle Namen der Tabelle 2 stehen, die in tabelle1totabelle2 drin stehen.


--- Puh . Das weiss ich gerade nicht weiter . Es soll also hinterheit alles in einer Zeile
stehen. Geht das ?

SUBSELECTS dürfen nicht sein..


Über Hilfe wäre ich dankbar..
Mitglied: Saskia137
15.11.2007 um 11:51 Uhr
Hallo Jörn,

also ich würde mit nem Join arbeiten. In wiefern der bzgl. der Syntax in MYSQL etwas anders (inner/outer weglassen oder nicht, ...) ist, als im MSSQL, weiß ich nicht mehr. Aber immerhin hättest Du hiermit mal nen Anhaltspunkt, wobei ich davon ausgegangen bist, dass Du die Tabellen über die IDs miteinander verknüpfen willst:

SELECT Tabelle1.*, Tabelle2.ID as ID2, Tabelle2.Name as Name2, Tabelle2.Beschreibung as Beschreibung2
FROM Tabelle1
LEFT JOIN Tabelle2 on Tabelle1.ID = Tabelle2.ID
[WHERE Tabelle1...]

oder

SELECT T1.ID as IDT1, T1.Name as NameT1, T1.Beschreibung as BeschreibungT1,
T2.ID as IDT2, T2.Name as NameT2, T2.Beschreibung as BeschreibungT2
FROM Tabelle1 as T1
LEFT JOIN Tabelle2 as T2 on T1.ID = T2.ID
[WHERE T1...]


Bzgl. dem Inner- oder Outer-Join wirst Du wohl mal ein wenig nachlesen müssen, in welchem Fall, welcher Join und welche Reihenfolge der Tabellen wann wie sinnvoll ist, denn je nach Art des Joins kann es z.B. sein, dass im rechten Bereich der Tabelle dann leere Felder auftreten, weil es zur ID der linken Tabelle in der rechten Tabelle keine Entsprechung gibt.

In wiefern die Alias-Vergabe notwendig ist, weiß ich auch nicht mehr, aber wie Du siehst gibt es da ja auch unterschiedliche Möglichkeiten.
Einfach mal ein wenig ausprobieren, dann sollte da schon ne schöne Tabelle rauskommen. ;)

Uuuups, ich hab grad erst gesehen, dass das ganze über 3 Tabellen gehen soll, irgendwie hab ich die 3. Tabelle mehrfach überlesen, also die zusätzlichen Felder entsprechend anhängen und nochmal nen weiteren Join anhängen und dann eben bei der WHERE-Klausel entsprechend einschränken, was man wirklich will.


SELECT T1.ID as IDT1, T1.Name as NameT1, T1.Beschreibung as BeschreibungT1,
T2.ID as IDT2, T2.Name as NameT2, T2.Beschreibung as BeschreibungT2,

tabelle1totabelle2. ...

FROM Tabelle1 as T1
LEFT JOIN Tabelle2 as T2 on T1.ID = T2.ID

LEFT JOIN tabelle1totabelle2 as T12 on T2.Name = T12.Name


...sofern das Feld in tabelle1totabelle2 eben das Feld auch Name heißt.
Bitte warten ..
Mitglied: Biber
15.11.2007 um 12:18 Uhr
Moin soa,

01.
SELECT t1.ID , t1.Name, t1.Beschreibung, 
02.
          t2.Name, t2.Beschreibung 
03.
FROM Tabelle1 t1, tabelle2 t2, tabelle1totabelle2 t3 
04.
Where t1.ID = t3.id_tab1 
05.
AND t2.ID = t3.id_tab2;
Grüße
Biber
Bitte warten ..
Mitglied: soa
15.11.2007 um 15:59 Uhr
Na , da bin ich ja mal gespannt. Werd ich nachher mal ausprobieren.


Danke, werden noch mal besied geben ob es so läuft

Hatte es so gemacht , dass ich zuerst die komplette Tabelle 1 auslese
und dann zur Laufzeit in php die ID an eine 2 Abfrage übergebe.

Funktioniert auch, ist aber wenig performant, insbesondere wenn
man viele Datensätze hat...


VG
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Datenbankabfrage Powershell (3)

Frage von internet2107 zum Thema Batch & Shell ...

Microsoft Office
gelöst Übertrag in eine andere Tabelle (7)

Frage von charmeur zum Thema Microsoft Office ...

Entwicklung
gelöst SQL Update aus derselben Tabelle (1)

Frage von winscheil zum Thema Entwicklung ...

Datenbanken
gelöst SQL - Zwei Tabellen zusammenführen (6)

Frage von Memo66 zum Thema Datenbanken ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (21)

Frage von McLion zum Thema Router & Routing ...

Windows Server
Kennwort vergessen bei Hyper vserver 2012r (20)

Frage von jensgebken zum Thema Windows Server ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Festplatten, SSD, Raid
Raidcontroller funktioniert nur, wenn unter Legacy-Boot gestartet wird (13)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...