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, 4484 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 Server
Problem mit Webdav und Webserver IIS (3)

Frage von JUJUS31 zum Thema Windows Server ...

Netzwerkgrundlagen
Multi NAT Problem (9)

Frage von Gr33n93 zum Thema Netzwerkgrundlagen ...

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (17)

Frage von montylein1981 zum Thema Windows Server ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst ZIP-Archive nach Dateien durchsuchen und Pfade ausgeben (33)

Frage von evinben zum Thema Batch & Shell ...

Router & Routing
Routingproblem in Homerouter-Kaskade mit Raspi (20)

Frage von Oldschool zum Thema Router & Routing ...

Server
Freenas schlechte Schreib Performance bei NFS (16)

Frage von janosch12 zum Thema Server ...

C und C++
Methode multiple return values (8)

Frage von mayho33 zum Thema C und C ...