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

Wie kann ich zwei Zeilen einer Datenbank zu einer verschmelzen und unterschiedliche Spalten zusammenkombinieren?

Frage Microsoft Microsoft Office

Mitglied: stevensqwe

stevensqwe (Level 1) - Jetzt verbinden

15.04.2010, aktualisiert 23:13 Uhr, 3609 Aufrufe, 9 Kommentare

Hey!
Bräuchte Eure Hilfe bzgl. eines Fusion-Problems, an dem ich gerade knabbere...
Schönen Gruß,
stevens

Zwei Zeilen einer Tabelle wie z.B.:

LotNumber TaskName StartDate StartTime EndDate EndTime
1000 A 1.1.2010 10:00 2.1.2010 21:00
1000 B 3.1.2010 19:00 5.1.2010 20:00
....


sollen folgend kombiniert werden:

LotNumber StartDate StartTime EndDate EndTime
1000 1.1.2010 10:00 5.1.2010 20:00

d.h. bei gleichen LotNumbers soll der kleinere StartDate und StartTime mit dem größeren EndDate und EndTime kombiniert werden, so dass wie im Beispiel bei LotNumber 1000 nun der StartDate und StartTime vom TaskName A verwendet wird und der EndDate und EndTime von TaskName B.

Wie könnte ich dies realisieren?
Mitglied: dog
16.04.2010 um 00:51 Uhr
Eine Möglichkeit in MySQL (nicht die schnellste):
01.
SELECT a.LotNumber, 
02.
(SELECT CONCAT(b.StartDate," ",b.StartTime) FROM test1 b WHERE b.LotNumber = a.LotNumber ORDER BY b.StartDate, b.StartTime LIMIT 1) AS `Start`, 
03.
(SELECT CONCAT(c.EndDate," ",c.EndTime) FROM test1 c WHERE c.LotNumber = a.LotNumber ORDER BY c.EndDate DESC, c.EndTime DESC LIMIT 1) AS `End` 
04.
 FROM test1 a GROUP BY a.LotNumber
Bitte warten ..
Mitglied: stevensqwe
16.04.2010 um 18:22 Uhr
Hi dog,
hab versucht, den MySQL Code in ACCESS SQL umzustricken, aber irgendwie streikt ACCESS (d.h. concat gegen & ausgetauscht (zuerst, dann mit + für eine Datums- und UhrzeitAddition) und limit 1 durch top 1), geht aber leider nicht... irgendeine Idee?

01.
SELECT A.LotNumber, 
02.
(SELECT (B.StartDate + B.StartTime) FROM M_LotNumber_StartEnd AS B  
03.
WHERE B.LotNumber = A.LotNumber  
04.
ORDER BY B.StartDate, B.StartTime TOP 1) AS Start,  
05.
(SELECT (C.EndDate + C.EndTime) FROM M_LotNumber_StartEnd AS C  
06.
WHERE C.LotNumber = A.LotNumber  
07.
ORDER BY C.EndDate DESC, C.EndTime DESC TOP 1) AS End 
08.
FROM M_LotNumber_StartEnd AS A  
09.
GROUP BY A.LotNumber
Fehlermeldung: Syntaxfehler . in Abfrageausdruck '(SELECT (B.StartDate + B.StartTime) FROM M_LotNumber_StartEnd AS B WHERE B.LotNumber = A.LotNumber ORDER BY B.StartDate, B.StartTime TOP 1)'.




[Edit Biber] Das letzte Mal für heute: Code-Tags nachgetragen. [/Edit]
Bitte warten ..
Mitglied: Biber
16.04.2010 um 19:10 Uhr
Moin stevensqwe,

Access kennt weder LIMIT noch TOP. (Soweit ich weiss)

Wenn du die beide "TOP 1"-Stellen löscht, solltest du zumindest einen Resultset auf den Schirm bekommen.

Und wenn ich das Gestrunkele Statement richtig inhaliere, meinst du doch mit diesem ORDER BY...TOP 1 soviel
wie weniger komplex formulierende Menschen mit einem MAX() ...oder MIN() der Start/Endezeitpunkte bekunden würden.

Warum sagst du das dem Access nicht?

Nachtrag: so zum Beispiel:
01.
SELECT A.LotNumber, 
02.
(SELECT max(B.StartDate + B.StartTime) FROM M_LotNumber_StartEnd AS B  
03.
WHERE B.LotNumber = A.LotNumber ) AS Start,  
04.
(SELECT min(C.EndDate + C.EndTime) FROM  M_LotNumber_StartEnd AS C  
05.
WHERE C.LotNumber = A.LotNumber  
06.
) AS End 
07.
FROM M_LotNumber_StartEnd AS A  
08.
GROUP BY A.LotNumber
Grüße
Biber
Bitte warten ..
Mitglied: stevensqwe
17.04.2010 um 00:21 Uhr
Tach Biber,

irgendwie ist ACCESS mit dem A.LotNumber irgendwo nicht ganz einverstanden und beklagt sich:

"Das angegebene Feld 'A:LotNumber' kann sich auf mehr als eine der Tabellen beziehen, ..."

Was kann man da noch anders machen?

Schönen Gruß,
stevens
Bitte warten ..
Mitglied: Biber
17.04.2010 um 15:39 Uhr
Moin stevensqwe,

das weiss ich so auch nicht - ich sehe da keinen Syntax-Fehler.

Ist aber auch insofern erstmal egal, da sich eigentlich zwei Folgefragen ergeben..

1. Wenn du wirklich "nur" die drei Felder Lotnumber, Max(StartZeit) der LotNumber, Min(Endzeit) der Lotnumber brauchen würdest OHNE weitere Attribute...
Dann bräuchtest du auch nicht über drei (logische) Tabellen gehen, sondern nur über eine.

01.
 SELECT LotNumber, 
02.
                   max(StartDate + StartTime) AS Start,  
03.
                   min(EndDate + EndTime) AS End 
04.
          FROM M_LotNumber_StartEnd  
05.
GROUP BY LotNumber
2. Wenn du aber mehr Attribute brauchst, dann müssen die ja entweder aus dem Datensatz mit der Max-Startzeit oder dem mit der Min-Endzeit kommen.
Also dann: welche Attribute woher, falls Variante 1 nicht ausreicht?

Grüße
Biber
Bitte warten ..
Mitglied: stevensqwe
17.04.2010 um 18:32 Uhr
Hi Biber,

die Lösung ist spitze! Ja, ich brauche noch eine weitere Einschränkung, aber die muss ich nicht mit auflisten, sondern kann sie mit einem WHERE abfackeln... Wir hatten oben noch vertauscht, dass die kleinste Anfangszeit und die größte Endzeit herausgefilter wird, aber dann ist es PERFEKT! Danke nochmal!!

SELECT LotNumber, min(StartDate + StartTime) AS Start, max(EndDate + EndTime) AS End
FROM M_LotNumber_StartEnd
WHERE LyoNr="RL-1"
GROUP BY LotNumber;
Bitte warten ..
Mitglied: Biber
17.04.2010 um 18:56 Uhr
Moin stevensqwe,

freut mich, wenn es so passt.
Die beiden Zeitpunktwerte hatte ich zu flüchtig gelesen - ich war vom spätest möglichen Start- und dem frühest möglichen Endezeitpunkt ausgegangen.

Schönes Wochenende
Biber
Bitte warten ..
Mitglied: stevensqwe
17.04.2010 um 19:31 Uhr
Hi Biber,
noch ein kleiner Nachtrag: Die Benennung End hat den Parser dazu ermutigt, eckige Klammern drumzumachen und zwischenzeitlich ziemlich random einfach keine Ergebnisse zu liefern... Hab einfach End in EndZ umbenannt und jetzt läuft's stabil... Keine Ahnung, was das schon wieder seitens ACCESS war?!
Herzlichen Dank Dir und ein schönes Wochenende!!!
stevens
Bitte warten ..
Mitglied: Biber
17.04.2010 um 19:54 Uhr
Moin stevensqwe,

die eckigen Klammern sind wieder verursacht durch die Verwendung eines "reservierten Wortes".
Ich habe gestern oder vorgestern in einen anderen Access-Beitrag einen Link auf die von M$ veröffenliche Liste gepostet, aber ich glaube, es steht auch sogar in den Access-Hilfedateien.

Das Umbenamsen von "End" in "EndZ" war auf jeden Fall die richtige Reaktion.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Exchange Server
Exchange 2007 Datenbank restore ohne Exchange zu verändern - SBS2008

Frage von pitamerica zum Thema Exchange Server ...

Datenbanken
Datenbank API Automation

Link von Frank zum Thema Datenbanken ...

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

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...