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

MySQL Subquery und where is problem

Frage Entwicklung Datenbanken

Mitglied: s7mahess

s7mahess (Level 1) - Jetzt verbinden

06.04.2011 um 16:25 Uhr, 4480 Aufrufe, 4 Kommentare

Guten Tag,

ich habe folgendes Problem:

Wenn ich diese MySQL Syntax benutze kann ich nicht nach "zustand" oder "status" filtern, zB " where zustand = 'in Ordnung'

01.
select 
02.
	geraete_id AS outer_id, 
03.
	hersteller, 
04.
	typ, 
05.
	seriennummer, 
06.
	ipei, 
07.
	(SELECT zustand FROM geraetehistory LEFT JOIN geraetezustand USING (geraetezustand_id) WHERE geraete_id = outer_id ORDER BY geraetezustand_id DESC LIMIT 1) AS zustand, 
08.
	(SELECT status FROM geraetehistory LEFT JOIN geraetestatus USING (geraetestatus_id) WHERE geraete_id = outer_id ORDER BY geraetestatus_id DESC LIMIT 1) AS status, 
09.
	garantiebis 
10.
from 
11.
	geraete 
12.
left join geraetetyp using (geraetetyp_id)
ausgabe soll sein:

id | hersteller | typ | snr | ipei | letzter eigentragener wert bei geraetezustand_id in geraetehistory | letzer eingetragner wert geraetestatus_id in geraetehistory | garantie

meine datenbankstruktur sieht wiefolgt aus:

b01c03a21501edf277647b42c058c259 - Klicke auf das Bild, um es zu vergrößern
Mitglied: thaenhusen
06.04.2011 um 18:10 Uhr
Moin.

Du kannst nicht mit dem Alias filter also

where zustand = 'in Ordnung'

müsste heißen:

where (SELECT zustand FROM geraetehistory LEFT JOIN geraetezustand USING (geraetezustand_id) WHERE geraete_id = outer_id ORDER BY geraetezustand_id DESC LIMIT 1) = "in Ordnung"

(ungetestet)

HTH
MK
Bitte warten ..
Mitglied: Biber
06.04.2011 um 19:42 Uhr
Moin s7mahess,

abgesehen von thaenhusens Kommentar - wenn du diese abfrage gegen das oben abgebildete Datenmodell abfeuerst...
Was ist denn deine Erwartungshaltung?

Eine "geraete_id" wird doch ein-, zwei- oder achtmal gefunden in der Tabelle "geraete_history"
Und nur von da kommst du doch auf den "Zustand" und den "Status".

Wenn schon, dann darfst du doch aus der "geraete_history" nur die neuesten Datensätze, nur den Stand "heute" abziehen.

Oder welche Fragestellung willst du mit diesem Statement beantworten?

Grüße
Biber
Bitte warten ..
Mitglied: s7mahess
07.04.2011 um 09:07 Uhr
Ok,

das obere statment soll mir eine Liste mit allen Geräten ausgeben in dieser Form:

id ||| hersteller ||| typ ||| snr ||| ipei ||| letzter eigentragener wert bei geraetezustand_id in geraetehistory ||| letzer eingetragner wert geraetestatus_id in geraetehistory ||| garantie

in spalte "zustand" soll der aktuellste (letzte zustand) des geräts stehen. das wäre aus der tabelle "geraetehistory" der mit der höchsten "geraetehistory_id" where "geraete_id" = ..........................



Da kam der Gedankenblitz:

01.
select 
02.
	geraete_id, 
03.
	hersteller, 
04.
	typ, 
05.
	seriennummer, 
06.
	ipei, 
07.
	(SELECT zustand FROM geraetehistory LEFT JOIN geraetezustand USING (geraetezustand_id) WHERE geraetehistory.geraete_id = geraete.geraete_id ORDER BY geraetezustand_id DESC LIMIT 1) AS zustand, 
08.
	(SELECT status FROM geraetehistory LEFT JOIN geraetestatus USING (geraetestatus_id) WHERE geraetehistory.geraete_id = geraete.geraete_id ORDER BY geraetestatus_id DESC LIMIT 1) AS status, 
09.
	garantiebis 
10.
from 
11.
	geraete 
12.
left join geraetetyp using (geraetetyp_id) 
13.
WHERE 
14.
	(SELECT zustand FROM geraetehistory LEFT JOIN geraetezustand USING (geraetezustand_id) WHERE geraetehistory.geraete_id = geraete.geraete_id ORDER BY geraetezustand_id DESC LIMIT 1) LIKE 'in%'
Bitte warten ..
Mitglied: Biber
07.04.2011 um 10:56 Uhr
[OT]
@s7mahess
Hört sich echt performant an, das Statement.....

Grüße
Biber
[/OT]
Bitte warten ..
Ähnliche Inhalte
Windows Update
gelöst Windows Server 2012 R2 - WSUS Problem (1)

Frage von aladin.inder zum Thema Windows Update ...

Verschlüsselung & Zertifikate
Zugriff auf mySQL-DB mit ODBC und SSL (2)

Frage von Titan24 zum Thema Verschlüsselung & Zertifikate ...

Batch & Shell
PowerShell Transkript Problem (5)

Frage von Marabunta zum Thema Batch & Shell ...

Ubuntu
Problem mit MailServer unter Debian - Postfix, Dovecot (4)

Frage von Richard8 zum Thema Ubuntu ...

Heiß diskutierte Inhalte
Windows 7
gelöst BOOTMGR is missing (auch nach bootrec -RebuildBcd) (21)

Frage von Mipronimo zum Thema Windows 7 ...

Router & Routing
Tipps für Router (ca. 100 clients, VPN) (20)

Frage von oel-auge zum Thema Router & Routing ...

Windows Userverwaltung
Windows Freigabe: Zugriff auf alle Ordner trotz Sicherheitseinstellungen (18)

Frage von Pandreas zum Thema Windows Userverwaltung ...

Exchange Server
gelöst MS Exchange 2016 - Basicconfig Fragen (16)

Frage von maddig zum Thema Exchange Server ...