SQL Problem mit Left Join 2er Tabellen

Mitglied: Marcel1989

Marcel1989 (Level 1) - Jetzt verbinden

04.10.2018 um 10:53 Uhr, 868 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.

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):
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 ..
Heiß diskutierte Inhalte
Netzwerke
Sporadische Ausfälle im gesamten Heimnetz
gelöst bilbo-dvdFrageNetzwerke23 Kommentare

Guten Morgen, ich habe einen Kabelanschluss bei Vodafone und mein Tarif wurde im März auf CableMax 1000 umgestellt. Ich ...

Windows Server
Auslagerungsdatei wird nicht kleiner
GwaihirFrageWindows Server23 Kommentare

Hallo zusammen, gestern hat jemand auf einem unserer Terminalserver (Windows Server 2012 R2) eine Anwendung gestartet, die den RAM ...

Sicherheit
Sicherheit oder bessere Benutzbarkeit?
gelöst StefanKittelFrageSicherheit19 Kommentare

Hallo, ich habe eine Webanwendung programmiert und sehe mich nun mit einer Frage zur Benutzbarkeit konfrontiert. Bei der Anmeldung ...

LAN, WAN, Wireless
Externes Ziel nicht erreichbar vom internen Netzwerk
Stibe88FrageLAN, WAN, Wireless16 Kommentare

Hallo Community Ich habe bei mir Homematic IP installiert. Nun kann ich seit 4 Tagen mich nicht mehr in ...

Internet Domänen
Azure AD deactivate Identity Protection
Jannik2018FrageInternet Domänen15 Kommentare

kann mir einer sagen wie ich beim meiner MS Azure AD Domäne die Identity Protection deactiviere siehe Screenshot sollte ...

Debian
2 ungesyncte Mountpoints an einem Raid 1 ?!?
jrglndmnnFrageDebian13 Kommentare

Hallo die Damen und Herren, Liebe Menschen und Menschinnen! Ich habe folgende Ausgangssituation und bitte, verzeiht mir die kleine ...

Ähnliche Inhalte
Datenbanken
SQL Join Felder nicht editierbar
gelöst grill-itFrageDatenbanken6 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

BirdyBFrageDatenbanken2 Kommentare

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

Datenbanken

SQL ORDER BY und Join mit 2 Tabellen

gelöst DippsFrageDatenbanken7 Kommentare

Hallo an alle, ich versuche gerade eine Join mit 2 Tabellen auf zubauen und mir den letzten Datensatz Anzeigen ...

Datenbanken

Hilfe bei SQL Inner Join bzw group by

gelöst HeadoNFrageDatenbanken12 Kommentare

Hallo ich brauche mal eure Hilfe da meine SQL Zeit doch sehr lange her ist. Ich glaube ich brauche ...

Datenbanken

MS SQL - SELECT mit INNER JOIN und doppelten Spaltennamen

emeriksFrageDatenbanken13 Kommentare

Hi, wenn man im SQL mit "INNER JOIN" verknüpfte Tabellen abfragt, und diese Tabellen haben teilweise die gleichen Spaltennamen, ...

Datenbanken

MS-SQL-Abfrage min max und zugehörige Werte aus JOIN

AximandFrageDatenbanken3 Kommentare

Hallo, wenn ich in einem JOIN über 2 Tabellen durchführe und mir min/max-Wert eines Feldes anzeigen lasse. Wie bekomme ...

Neue Fragen
Administrator Magazin
11 | 2020 Virtualisierung ist aus der IT nicht mehr wegzudenken. In der November-Ausgabe des IT-Administrator Magazins dreht sich der Schwerpunkt um das Thema "Server- und Storage-Virtualisierung". Darin erfahren Sie, wie sich die Virtualisierungstechnologie entwickelt hat, welche Varianten es im Bereich Server und Speicher gibt und wie ...
Neue Beiträge
Neue Jobangebote
Server- und Storage-VirtualisierungServer- und Storage-VirtualisierungBerechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid Cloud