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

SQL Problem mit Left Join 2er Tabellen

Mitglied: Marcel1989

Marcel1989 (Level 1) - Jetzt verbinden

04.10.2018 um 10:53 Uhr, 482 Aufrufe, 7 Kommentare

Hi,
Ich hab das Problem wenn ich eine Tabelle (name: aufbereitet) mit der Tabelle enddaten zusammenfüge passt noch alles.
Füge ich nun die Tabelle Silo noch hinzu bekomme ich leider mehrfach doppelte Zeilen.
Grund dafür ist das in der Tabelle Silo anhand des Zeitpunkts 2 Werte gefunden werden (was korrekt ist).
Die werden dann in 2 Zeilen ausgegeben.

Hab ich irgendwie die Möglichkeit diese doppelten Ergebnisse dann als String in einer Zeile auszugeben?
wäre wirklich wichtig. danke.

01.
SELECT 
02.
aufbereitet.Zeitpunkt,
03.
aufbereitet.Rezept,
04.
aufbereitet.Charge, 
05.
aufbereitet.HarzTemp, 
06.
aufbereitet.Feuchtestufe, 
07.
aufbereitet.GewichtMischung, 
08.
aufbereitet.FluessigHarz, 
09.
aufbereitet.Tara, 
10.
enddateien.Staub,
11.
silo.SiloName,
12.
silo.Ist,
13.
silo.Soll
14.
FROM aufbereitet
15.
LEFT JOIN enddateien ON aufbereitet.Charge = enddateien.Charge
16.
inner JOIN silo ON DATE_FORMAT(aufbereitet.Zeitpunkt, '%d.%m.%y %H:%i') = DATE_FORMAT(silo.Zeitpunkt, '%d.%m.%y %H:%i')
Mitglied: em-pie
04.10.2018 um 11:05 Uhr
Moin,

hast du es mal mit SELECT DISTINCT .... versucht?
Funktioniert aber nur, wenn alle doppelten Datensätze auch tatsächlich in allen angezeigten Spalten doppelt vorkommen.

Gruß
em-pie
Bitte warten ..
Mitglied: Marcel1989
04.10.2018 um 11:30 Uhr
funktioniert hat es bei mir nicht. Meine Tabelle sieht wie folgt aus:
123 - Klicke auf das Bild, um es zu vergrößern


Wie man sieht ist am 29.09.2018 einige Werte doppelt vohanden.
Zum einen kann es aber auch vorkommen das es 3 zusätze gibt. Also dann die Zeile verdreifacht wird.

Und am Ende will ich das Siloname ist und soll ein Feld sind.
und darunter dann der zweite Silename ist und soll

und ggf wenn vorhanden dann
3ter Siloname ist uns soll


Ich hoffe man versteht was ich meine

Gruß
Marcel
Bitte warten ..
Mitglied: ukulele-7
04.10.2018 um 13:14 Uhr
Dein Join ist auf jedenfall richtig, du hast im wesentlichen drei Möglichkeiten:

a) Du grenz deinen Join weiter ein so das nur eine Zeile in Tabelle Silo betroffen ist. Das scheint mir hier nicht so einfach aber ich verstehe die Daten nicht als Außenstehender.
b) Du sortierst die Daten und nimmst nur den jeweils ersten Wert. Dazu musst du nicht die Tabelle sondern einen Select auf die Tabelle joinen, Beispiel:
[CODE]SELECT * FROM A JOIN ( SELECT ROW_NUMBER() OVER (PARTITION BY fkA ORDER BY spalte) AS zeile,* FROM B ) B ON A.pk = B.fkA AND B.zeile = 1[/CODE]
Das hängt aber davon ab welches DBMS du nutzt, mir scheint MySQL? Welche Version?
c) Du nutzt GROUP BY und aggregierst oder gruppierst alle Spalten. Auch hier muss dann eventuell Silo.Name (String) mit einer DBMS-spezifischen Funktion ermittelt werden, unter MySQL gibts group_concat().
Bitte warten ..
Mitglied: em-pie
04.10.2018 um 13:55 Uhr
Für mich sieht das auch alles richtig aus.

Und es gibt bei dir keine doppelten EInträge.
Aufgrund deines Join-Konstrukts ergibt sich eben, dass es für jedes Datum mehrere SILO-Sätze findet.
Ich wüsste jetzt nicht, welches SILO ich als einziges darstellen sollte. Dies müsstest du selbst heraus selektieren. Mögliche Wege dazu hat dir @ukulele-7 ja schon genannt.
Bitte warten ..
Mitglied: Marcel1989
04.10.2018 um 14:59 Uhr
Ok, da wir immernoch nicht gleich denken

Ich hab ein Bild angehängt.
das es etwas anschaulicher darstellt.

Mein "Zeitpunkt" ist ein unique index. Also ist es ansich nicht möglich 2 mal die gleiche Zeile zu haben. die wird erst erstellt (in der View) wenn ich left join anhand der Zeit mache, weil eben 2 ergebnisse gefunden werden für die Uhrzeit.

In der Tabelle Silo ist es so das für ein Rezept mehrere zusammenstellungen sind und in der Silo steht eben die Datetime mit dem Namen vom Silo was verwendet wurde (beispiel Feldspat) und das wird dann mit anderen Sachen gemischt (geschieht ja auch um die Uhrzeit) und deshalb gibt es dann eben auch mal 2 ergebnisse in Silo für eine Suche.

Wie könnten ich das denn lösen?

Damit eben wie im Bild beschrieben z.B. am 29.09.2018 um 09:31:10 das sowohl der Feldspat als auch das Pulverharz in einer Zeile ausgegeben werden.

Nutze ich Group by Zeitpunkt dann zeigt er mit das Pulverharz nicht mehr an. Nutze ich Group_Concat dann zeit er mir nun noch alle in der Tabelle befindlichen Zeilen in eine an. (zumindest weiß ich hier nicht genau wie ich das in einer Left Join verwenden soll)

Gruß
Marcel

PS: danke für die hilfe
123 - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: ukulele-7
04.10.2018 um 16:01 Uhr
Ich würde schon sagen das wir dich verstehen, du scheinst nur mit GROUP_CONCAT nicht geschafft zu haben was du wolltest. Hier mal ein Vorschlag (ich mache allerdings i.d.R. MSSQL, kann sein das das noch minimal angepasst werden muss):
01.
SELECT 
02.
aufbereitet.Zeitpunkt,
03.
aufbereitet.Rezept,
04.
aufbereitet.Charge, 
05.
aufbereitet.HarzTemp, 
06.
aufbereitet.Feuchtestufe, 
07.
aufbereitet.GewichtMischung, 
08.
aufbereitet.FluessigHarz, 
09.
aufbereitet.Tara, 
10.
enddateien.Staub,
11.
GROUP_CONCAT(silo.SiloName + ' ' + cast(silo.Ist AS VARCHAR(20)) + '/' + cast(silo.Soll AS VARCHAR(20)) ORDER BY silo.Soll DESC SEPARATOR ';') AS silo
12.
FROM aufbereitet
13.
LEFT JOIN enddateien ON aufbereitet.Charge = enddateien.Charge
14.
inner JOIN silo ON DATE_FORMAT(aufbereitet.Zeitpunkt, '%d.%m.%y %H:%i') = DATE_FORMAT(silo.Zeitpunkt, '%d.%m.%y %H:%i')
15.
GROUP BY
16.
aufbereitet.Zeitpunkt,
17.
aufbereitet.Rezept,
18.
aufbereitet.Charge, 
19.
aufbereitet.HarzTemp, 
20.
aufbereitet.Feuchtestufe, 
21.
aufbereitet.GewichtMischung, 
22.
aufbereitet.FluessigHarz, 
23.
aufbereitet.Tara, 
24.
enddateien.Staub
Bitte warten ..
Mitglied: Marcel1989
04.10.2018 um 16:15 Uhr
Das Ergebniss.
Ich dank dir wirklich du hilft mir immer wieder den richtigen weg zu finden. Vielleicht fehlt hier einfach noch irgendwas. Ich werd mal bisschen rumprobieren.
Wenn es allerdings jemand schon weiß ruhig raus damit

Gruß
Marcel
123 - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Ähnliche Inhalte
Datenbanken
SQL - JOIN zeigt mehrfaches an
Frage von MiStDatenbanken9 Kommentare

Guten Morgen, ich habe mich frisch mit dem Thema SQL "angefreundet". Jetzt habe ich aber irgendwie ein Problem. Und ...

Datenbanken
SQL Join Felder nicht editierbar
gelöst Frage von grill-itDatenbanken6 Kommentare

Hallo zusammen, ich habe eine (My)SQL Abfrage über zwei Tabellen formuliert. Allerdings habe ich jetzt das Problem, dass ich ...

Datenbanken

SQL: Anzahl von Datensätzen bei JOIN

Frage von BirdyBDatenbanken2 Kommentare

Hallo zusammen, ich stehe gerade etwas auf dem Schlauch und hoffe auf eure Hilfe. Gegeben sind in unserer SQL ...

Datenbanken

SQL Multiple Join auf selbe ID

gelöst Frage von Memo66Datenbanken3 Kommentare

Hi zusammen, ich habe ein kleines Problem mit dem Join und vielleicht kann mir ja einer mit einem Lösungsansatz ...

Neue Wissensbeiträge
Humor (lol)
Das IoT wird schlimmer
Erfahrungsbericht von Henere vor 1 TagHumor (lol)7 Kommentare

Nun auch schon über den WSUS:

Sicherheit

Win10 1809 und höher erlauben nun das Sperren und Whitelisten von bestimmten Geräten

Tipp von DerWoWusste vor 1 TagSicherheit1 Kommentar

Vor 1809 konnten nur Geräteklassen gesperrt werden, nun können endlich einzelne Device instance IDs gewhitelistet werden (oder andersherum: gesperrt ...

Windows 10

Hands-On: What is new in the Windows 10 November 2019 Update?

Information von DerWoWusste vor 2 TagenWindows 10

Die wenigen (aber zum Teil interessanten) Neuheiten werden in diesem Video sehr schnell erklärt und vorgeführt.

Grafik

Gute Spiele aus der Ubuntu Repository: SuperTuxKart

Information von NetzwerkDude vor 2 TagenGrafik2 Kommentare

Fall jemand die Firmenpolicy hat das man Linux Software nur aus dem default Repository installieren kann: Ich habe festgestellt ...

Heiß diskutierte Inhalte
Ubuntu
Ubuntu-Putty hilfe
gelöst Frage von Nickolas.GroheUbuntu53 Kommentare

Hallo Wie ändere ich einen ssh Port auf Linux Ubuntu? LG Nickolas

Windows 7
Festplatte in einen anderen PC umziehen lassen
Frage von Ghost108Windows 729 Kommentare

Hallo zusammen, ich bekomme die nächsten Tage einen neuen PC (komplett andere Hardware als in meinem jetzigen) Was für ...

LAN, WAN, Wireless
10G Netzwerk konfigurieren für maximalen Datendurchsatz
Frage von hukimanLAN, WAN, Wireless29 Kommentare

Guten Morgen, in unserem Betrieb wurde das Netzwerk auf 10G (Kupfer) umgerüstet. Grund dafür sind große Laserscandaten die sehr ...

Firewall
Sophos UTM 9.6 Lets Encrypt Fehler
gelöst Frage von Pageman262Firewall13 Kommentare

Hallo liebe Profis, ich versuche auf einer Sophos UTM Let´s Encrypt zu aktivieren. Ich bekomme dabei diesen Fehler: 2019:11:13-11:15:20 ...