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

MySQL - verknüpfte Abfrage?

Frage Entwicklung Datenbanken

Mitglied: conrado

conrado (Level 1) - Jetzt verbinden

02.08.2007, aktualisiert 07.08.2007, 6383 Aufrufe, 6 Kommentare

Hallo Forum,

ich habe ein Problem mit einer Datenbankabfrage.
Szenario:

Tabelle mitarb:

id name abteilung-id
1 Müller 1
2 Meier 1
3 Schulze 2
4 Beier 3
5 Brand 1


Tabelle abt:

id abtname
1 bla
2 blu
3 bli
4 blo
5 blü
6 blä
7 blö
8 blp
9 blr


Ich brauche alle Abteilungen, die in mitarb vorkommen.
Abteilungen die keinen Eintrag in mitarb haben, sollen also nicht ausgegeben werden.
Die Ausgabe müsste also lauten:

bla
blu
bli


Gibt es da irgendeine verwurschtelte SELECT-Abfrage? Man könnte das in PHP mit einer Schleife etc. lösen, aber wird bei großen Tabelle zu argen Performance-Problemen führen.
Was ich suche wäre eine elegante Lösung.

Hat jemand eine Idee?

Danke im Voraus

Conrad
Mitglied: gamma63
02.08.2007 um 14:50 Uhr
Hallo Conrad

versuch das hier

select distinct a.abtname from mitarb m, abt a where m.abteilung-id=a.id;

Grüße
Gamma
Bitte warten ..
Mitglied: conrado
02.08.2007 um 15:12 Uhr
Hallo Gamma,

hatte zuerst einen Tippfehler, aber nun läuft es. Danke vielmals, habe das System nun auch verstanden und weiss in Zukunft bescheid!

Ein Problem bleibt noch.
Als ich einfach noch alle Zeilen der Tabelle "abt" ausgeben wollte, konnte ich mit $row['id'] auf die Spalte ID der Tabelle abt zugreifen. Nun spielt ja auch noch die Spalte ID der Tabelle "mitarb" dazu. Einfach $row['id'] gibt nun nichts mehr zurück, ich habe es schon mit $row['a.id'] probiert, ohne Erfolg. Ich weiss, dass man mit SELECT id AS id2 etwas umschreiben kann, aber wo kann ich in dieses spezielle Query einsetzen?

Grüße
Conrad
Bitte warten ..
Mitglied: Guenni
02.08.2007 um 20:37 Uhr
@conrado

Hi,

wenn Tabellen gleiche Spaltennamen haben, mußt du diese
qualifizieren. Z.B.:

"select mitarb.id, abt.id .... usw".

Wenn du dann einen Alias mitgibst, kannst du diesen auch weiterverwenden:

Bei "select mitarb.id as mitarb_id, abt.id as abt_id.... usw". kannst du dann mit
$row[mitarb_id] bzw. $row[abt_id] auf die ID's mittels der Aliase zugreifen.

Gruß
Günni
Bitte warten ..
Mitglied: conrado
04.08.2007 um 12:24 Uhr
Danke auch nochmal an dich Günni, das AS kannte ich, nur war mir nicht ganz klar wo ich es bei diesem Query einsetzen soll. Habe es aber so gelöst bekommen:

select distinct a.abtname,a.id as abteilung_id from mitarb m, abt a where m.abteilung-id=a.id;
Bitte warten ..
Mitglied: SvenGuenter
07.08.2007 um 15:56 Uhr
Pass nur auf da du mit diesem Select einen Crossjoin machst. Das kann bei komplexeren Sachen zu Problemen führen. Nimm lieber einen Join

Der Select würde dann folgendermaßen aussehen
SELECT abt.abtname FROM abtname INNER JOIN mitarb ON abt.id = mitarb.amteilung-id


Gruß

Sven
Bitte warten ..
Mitglied: conrado
07.08.2007 um 15:59 Uhr
Danke Sven, bei dieser Variante ist auch der Syntax einleuchtender.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Datenbanken
gelöst MySQL Abfrage um JOIN erweitern (14)

Frage von datadexx zum Thema Datenbanken ...

PHP
MySQL-Abfrage mit php: Wert + true bzw. false (2)

Frage von tomolpi zum Thema PHP ...

Apache Server
gelöst Fehler beim Import einer DB vom anderen MySQL-Server (2)

Frage von zeroblue2005 zum Thema Apache Server ...

Datenbanken
Tool oder Dienst für E-Mail (POP3) zu MySQL Datenbank (3)

Frage von bounee 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 ...