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, 6376 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
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

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

Frage von tomolpi zum Thema PHP ...

Datenbanken
gelöst MYSQL Abfrage (20)

Frage von datadexx zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Datenbanken
gelöst Row Number bei einer Abfrage sinnvoll einsetzen (1)

Frage von Aximand zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...