Top-Themen

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

gelöst Select-Anweisung in Where Bedingung

Mitglied: Fred666

Fred666 (Level 1) - Jetzt verbinden

19.07.2011, aktualisiert 12:06 Uhr, 2550 Aufrufe, 5 Kommentare

Verwendet wird SQL2005

Hey,

ich versuche vergebens eine Select-Anweisung in einer Where-Bedingung einer Select-Anweisung einzubauen.

Hintergrund ist folgender:
Es gibt eine Tabelle Werkstuecke welche als Spalten hat: ID, Bearbeitungs_ID, Anzahl, Startzeit und Endzeit. Die Werkstücke werden alle im Betrachtungsintervall t=+30min bis t=+60min bearbeitet, bzw. es gibt Werkstücke, die schon zuvor angefangen haben mit der Bearbeitung.

Soo nun möchte ich ermitteln, wieviel Maschinen in dem Betrachtungsfenster in Bearbeitung sind. Das mache ich dann so, dass ich schaue, welche Werkstuecke zu einem Zeitpunkt t=+30min bis t=+60min bereits in Bearbeitung sind dh ich schaue, wo startzeit vor t=+30 bis +60 fallen.

Das mache ich so (erste Select-Anweisung):
01.
select Bearbeitungs_id, count(t.Bearbeitungs_ID) as Anzahl_an_Maschinen
02.
from dbo.Werkstuecke as t
03.
where Startzeit < "T=+30" -- also wo Startzeit bereits vorher angefangen hat wie t=+30 
04.
GROUP BY t.Bearbeitungs_ID 
Diese Anweisung klappt auch ganz gut. Dh. ich bekomme eine Tabelle:
Bearbeitungs_ID......|...Anzahl_an_Maschinen
........2..................................2
........5..................................2
--> Es sind in 30 Minuten bereits 2 Maschinen in Arbeit mit Bearbeitungs_ID = 2 und 2 Maschinen mit Bearbeitungs_ID = 5.

Jetzt gibt es aber auch Werkstücke die erst in diesem Zeitraum mit der Bearbeitung anfangen. Das versuche ich ähnlihc wie oben zu ermittlen nur ohne Where-Anweisung:
01.
select t.Bearbeitungs_ID, count(t.Bearbeitungs_ID)
02.
from dbo.Werkstuecke ]as t
03.
GROUP BY t.Bearbeitungs_ID 
Ich erhalte:
Bearbeitungs_ID......|...Anzahl_an_Maschinen
........2..................................6
........3..................................4
........4..................................4
........5..................................2

SO und genau da liegt mein Problem. Ich würde gerne in die Where-Bedingung etwas (zb. ein select) einbauen, was mir sowas wie unten ausgibt!!!

IBearbeitungs_ID......|...Anzahl_an_Maschinen
........2..................................2
........3..................................0
........4..................................0
........5..................................2

Dh. aus der ersten Tabelle habe ich ja nur Bearbeitung_ID = 2 und 5 mit jeweils 2 Maschienen gefunden die Trage ich in Tabelle ein. Der Rest hat noch nicht angefangen daher dort die 0, weil dort noch keine Maschine in Bearbeitung.

Kann mir jemand sagen wie ich das zu Lösen habe?!?
Ich hoffe ihr vesteht mich und könnt mir weiterhelfen!!

Danke und Grüße
Fred!!!!

... EDIT: ich würde es auch mit einem select into lösen wenn es ginge (ich weiss halt nurnicht wie!!!!!)
....EDIT_NEU: was ich mit meinem Edit meinte war dass ich, wenn ich eine select .. into anweisung machen würde, in der Where Bedingung angeben müsste:
01.
WHERE Bearbeitungs_ID <> (erste Select-Anweisung)
Mitglied: CadelPigott
19.07.2011 um 12:38 Uhr
Hallo Fred,

ich weiß nicht ob ich dich richtig verstanden habe. Du willst also den select auf eine Untermenge ausführen?

Das ginge in Etwa so:

select Bearbeitungs_id, count(t.Bearbeitungs_ID) as Anzahl_an_Maschinen
from dbo.Werkstuecke as t
where Startzeit in (select spalte1,spalte2,spalte3 from tabelle1 where spalte1 = 'blah')
GROUP BY t.Bearbeitungs_ID;

Mit dem eingefügten SELECT wählst du die Untermenge aus, über die der eigentliche SELECT laufen soll.

Gruß
Cadel
Bitte warten ..
Mitglied: Fred666
19.07.2011 um 13:02 Uhr
Hi Cadel,

also ich möchte am Schluss eine Tabelle haben, die falls eine Bearbeitung vor t= +30min die Anzahl der Maschinen die es betrifft einträgt und wenn ein maschinentyp nicht davon betroffen ist, soll er mir bei anzahl_maschinen die '0' reinschreiben!

Grüße Fred
Bitte warten ..
Mitglied: Dirmhirn
19.07.2011 um 13:24 Uhr
Zitat von Fred666:
Bearbeitung vor t= +30min die Anzahl der Maschinen die es

willst du alle Maschinen die gerade arbeiten und alle die in den nächtsen 30 min starten? was ist mit den 60 Minuten?

kannst nicht alle Maschinen Abfragen, bei denen die Endzeit < Jetzt und die Startzeit < Jetzt +30 ist?

ah, du willst aber immer eine vollständige Liste der Werkstücke - egal ob gerade bearbeitet, oder nicht?

gibt es bearbeitungs_ID in einer anderen Tabelle, ev. kannst du da mit JOINs arbeiten.

sg Dirm
Bitte warten ..
Mitglied: Fred666
19.07.2011 um 14:03 Uhr
Hi Drim,

ich will nicht die Werkstücke die gerade bearbeitet werden sondern die Maschinen die in bearbeitung gehen werden!!

mit t = +30min bis t = +60min ist zu verstehen: von jetzt 30 min in die zukunft bis von jetzt 60 min in die zukunft; also den Zeitraum von jetzt 30 min in zukunft mit dem Betrachtungsfenster von 30 min. Bsp: Uhrzeit jetzt 11:30:00 --> ich betrachte 12:00:00 Uhr bis 12:30:00 Uhr.

Ich will dann sozusagen wissen, welche Maschinen sind wenn ich mir 12:00:00 anschaue bereits in Betrieb. Es gibt aber mehrere BEarbeitungen genau. Aber es müssen ja in dem Zeitraum nicht alle Bearbeitungen von einer Maschine aufgenommen werden. D.h. ich will in der selben Tabelle auch die Maschinen sehen welche nicht in bearbeitung sind.

Daher meine Tabelle
IBearbeitungs_ID......|...Anzahl_an_Maschinen_'in Bearbeitung'
........2..................................2
........3..................................0
........4..................................0
........5..................................2
Bitte warten ..
Mitglied: Fred666
19.07.2011 um 14:15 Uhr
Soo... ich habe mal eine Lösung gefunden. (allerdings kann ich nicht beurteilen, ob das der beste Weg ist!!!) Wäre also net wenn jemand drüberschauen würde und mir evtll. Tipps geben könnte wie ich das dann eleganter schreibe.

01.
--Erster Schritt: Einfügen der Maschinen die bereits in Bearbeitung!!
02.
SELECT	Bearbeitungs_ID, COUNT(t.Bearbeitungs_ID) AS ArbeitendeMaschinen
03.
INTO	 ##tempTabelle
04.
FROM	 dbo.Werkstuecke 
05.
WHERE  StartZeit < '12:00:00'
06.
GROUP BY Bearbeit_ID
07.

08.
--zweiter Schritt: Einfügen der Maschinen die zu dem Zeitpunkt 12:00:00 noch nicht in Bearbeitung!!
09.
INSERT INTO ##tempTabelle
10.
SELECT	 Bearbeitungs_ID, 0 AS ArbeitendeMaschinen
11.
FROM	 dbo.Werkstuecke AS t 
12.
where          Bearbeitungs_ID NOT IN (select Bearbeitungs_ID from ##tempTabelle)
13.
GROUP BYBearbeitungs_ID
grüße Fred
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell - if Bedingung
gelöst Frage von pps4535Batch & Shell4 Kommentare

Moin, moin, ich dachte ich mal einen neuen Thread auf, damit es geordnet abläuft :-) Hier habe ich schon ...

Windows 7
Batch IF Bedingung
gelöst Frage von JanSKIJWindows 73 Kommentare

Guten Morgen, seit mehreren Tagen versuche ich mich nun an meinem Script. Das meiste hab ich mir erfolgreich zusammen ...

Batch & Shell
Powershell Select
gelöst Frage von shwatsonBatch & Shell5 Kommentare

Hallo Community! Zu meinem Problem, ich habe mir ps1 und eine txt Datei erstellt, und versuche nun mit der ...

VB for Applications
Acc2003 - Bericht mit Bedingung
gelöst Frage von crack24VB for Applications5 Kommentare

Hallo, ich möchte einen Bericht anzeigen, der nur die Datensätze von einem Monat/Jahr anzeigen soll, was der User eingibt. ...

Neue Wissensbeiträge
Internet
Copyright-Reform: Upload-Filter
Information von Frank vor 21 StundenInternet

Hallo, viele Menschen reden aktuell von Upload-Filtern. Sie reden darüber, als wären es eine Selbstverständlichkeit, das Upload-Filter die Seitenbetreiber ...

Google Android

Blokada: Tracking und Werbung unter Android unterbinden

Information von AnkhMorpork vor 23 StundenGoogle Android1 Kommentar

In Ergänzung zu meinem vorherigen Beitrag: Blokada efficiently blocks ads, tracking and malware. It saves your data plan, makes ...

Google Android
Facebooks unsichtbare Datensammlung
Information von AnkhMorpork vor 23 StundenGoogle Android1 Kommentar

Rund 30 Prozent aller Apps im Play-Store nehmen Kontakt zu Facebook auf, sobald man sie startet. So erfährt der ...

Exchange Server

Exchange 2010 bis 2019 Sicherheitslücke durch CU RU schließen

Information von sabines vor 1 TagExchange Server

Für die hier: und hier: besprochene Sicherheitslücke ist ein Patch für Microsoft Exchange Server 2010 - 2019 verfügbar. RU ...

Heiß diskutierte Inhalte
Windows 10
Windows Update funktioniert nicht - Keine Verbindung mit dem Updatedienst
gelöst Frage von anveWindows 1030 Kommentare

Hallo, ich kann schon länger keine Updates mehr machen. Wenn ich auf Update suchen gehe, dann schreibt er folgendes: ...

LAN, WAN, Wireless
NETBEUI unter Windows 10
Frage von certifiedit.netLAN, WAN, Wireless26 Kommentare

Guten Abend, wir stehen gerade vor dem Rästel, warum man in einer Industriemaschine (wert gut 6-stellig, paar mal vorhanden) ...

Hardware
Was passiert wenn ein Server zu heiß wird?
Frage von LohrakHardware21 Kommentare

Hallo Sollte ein Server zu heiß werden, da z.B ein Lüfter ausfällt, was würde passieren? Wie meldet sich der ...

Internet
EU-Gremien einigen sich auf die schärfste Form von Upload-Filter und Leistungsschutzrecht
Information von FrankInternet19 Kommentare

Nun ist es . Die Verlage, die in der Vergangenheit das Internet verschlafen hatten und kurz vor ihrer Auflösung ...