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

Knifflige SQL Abfrage

Frage Entwicklung Datenbanken

Mitglied: desoleure

desoleure (Level 1) - Jetzt verbinden

04.10.2007, aktualisiert 13:44 Uhr, 3069 Aufrufe, 5 Kommentare

Hallo zusammen

Habe folgende Anfängerproblem. Mir stehen folgende Informationen zur Verfügung (Beispiel):

Artikel /Lagerort / Menge
Artikel A / Lagerort1 / 100
Artikel A / Lagerort2 / 10
Artikel B / Lagerort1 / 99
Artikel B / Lagerort2 / 101
Artikel B / Lagerort3 / 3

Ich muss als Schlussrestultat pro Artikel eine einzige Zeile ausgeben (Beispiel):

Artikel /Menge Lagerort1 / Menge Lagerort2 / Menge Lagerort3
Artikel A / 100 / 10 / 0
Artikel B / 99 / 101 / 3

Gibt es eine Möglichkeit, dies in einem einzigen View zu erreichen?

Für sämtliche Anregungen danke ich euch bereits an dieser Stelle recht herzlich!

Stephan Desoleure
Mitglied: Natureshadow
04.10.2007 um 12:30 Uhr
Wenn du zwei Tabellen machst mit den Spalten Artikel und Menge, eine für Lagerort1 udn eine für Lagerort2, und dann die Artikelbezeichnung eindeutig hältst, geht das. Ich mache das mal in MySQL-Syntax, vor MS-SQL habe ich mich bisher gedrückt:

CREATE TABLE `Lagerort1` (
`Artikel` TINYTEXT,
`Menge` INT(11)
);

CREATE TABLE `Lagerort2` (
`Artikel` TINYTEXT,
`Menge` INT(11)
);

Wenn du dann deine Daten reinpackst, z.B.:

INSERT INTO `Lagerort1` (`Artikel`, `Menge`) VALUES ('Artikel A', 10);
INSERT INTO `Lagerort2` (`Artikel`, `Menge`) VALUES ('Artikel A', 100);

... kannst du mit einer einzigen Abfrage das Ganze zusammenführen:

SELECT `Lagerort1`.`Artikel`, `Lagerort1`.`Menge`, `Lagerort2`.`Menge` FROM `Lagerort1`, `Lagerort2` WHERE `Lagerort1`.`Artikel`='Artikel A' AND `Lagerort2`.`Artikel`='Artikel A' LIMIT 1

Dabei habe ich so weit wie möglich auf den Einsatz von MySQL-Automatismen verzichtet und alles per Queries geregelt, ist natürlich nur eine von vielen Möglichkeiten.

-nik
Bitte warten ..
Mitglied: Biber
04.10.2007 um 12:35 Uhr
Moin desoleure,

Etwas abstrakt würde eine mögliche Lösung so aussehen können:
01.
Select artikel, Menge as Lagerort1, 0 as Lagerort2, 0 as Lagerort3  
02.
from ArtikelEingelagert where Lagerort ="Lagerort1" 
03.
UNION 
04.
Select artikel, 0 as Lagerort1, Menge as Lagerort2, 0 as Lagerort3  
05.
from ArtikelEingelagert where Lagerort ="Lagerort2" 
06.
UNION 
07.
Select artikel, 0 as Lagerort1, 0 as Lagerort2, Menge as Lagerort3  
08.
from ArtikelEingelagert where Lagerort ="Lagerort3" 
09.
Group by artikel
... mehr lässt ich sich nicht sagen, wenn weder Tabellennamen (relativ egal) noch Datenbank-Blech (ganz entscheidend) bekannt/benannt sind.

Bitte etwas konkreter posten.

Grüße
Biber

P.S. Ich verschiebe den Beitrag von "Internet & Intranet\Domain-Registrierung" nach "Datenbanken".
Bitte warten ..
Mitglied: desoleure
04.10.2007 um 13:16 Uhr
Hallo Biber

Das ganze befindet sich auf einem MS SQL Server 2005.

DB-Name: BMC_Prod

Artikel-Nummer: dbo.INVENTTABLE.ITEMID
Lagerort: dbo.INVENTDIM.INVENTLOCATIONID
Menge: dbo.INVENTSUM.AVAILPHYSICAL

Die Abfrage mit je einer Zeile pro Lagerort sieht zur Zeit so aus:

SELECT TOP (100) PERCENT dbo.INVENTTABLE.ITEMID, dbo.INVENTTABLE.ITEMNAME AS Artikel, dbo.INVENTDIM.INVENTLOCATIONID AS Lagerort,
dbo.INVENTSUM.AVAILPHYSICAL AS Menge
FROM dbo.INVENTDIM INNER JOIN
dbo.INVENTSUM ON dbo.INVENTDIM.INVENTDIMID = dbo.INVENTSUM.INVENTDIMID INNER JOIN
dbo.INVENTTABLE ON dbo.INVENTSUM.ITEMID = dbo.INVENTTABLE.ITEMID
WHERE (dbo.INVENTTABLE.DATAAREAID = N'smt') AND (dbo.INVENTSUM.DATAAREAID = N'smt') AND (dbo.INVENTDIM.DATAAREAID = N'smt')
ORDER BY dbo.INVENTTABLE.ITEMID

Die WHERE Einschränkungen sind rein DB-Technischer Natur und können vernachlässigt werden.

Thanks, Desoleure
Bitte warten ..
Mitglied: AndreasHoster
04.10.2007 um 13:31 Uhr
Gibt es, wird aber komplex.
Bsp:
SELECT DISTINCT TLager.Artikel, Tlager1.Menge_Lager1, Tlager2.Menge_Lager2, Tlager3.Menge_Lager3
FROM TLager,
(SELECT TLager.Artikel, TLager.Menge as Menge_Lager1
FROM TLager
WHERE TLager.Lager="L1") AS TLager1,
(SELECT TLager.Artikel, TLager.Menge as Menge_Lager2
FROM TLager
WHERE TLager.Lager="L2") AS TLager2,
(SELECT TLager.Artikel, TLager.Menge as Menge_Lager3
FROM TLager
WHERE TLager.Lager="L3") AS TLager3
where tlager.artikel=tlager1.artikel and tlager.artikel=tlager2.artikel and tlager.artikel=tlager3.artikel

Habe die Tabelle TLager genannt und die Lagerorte L1 bis L3.
Momentan macht diese View aber einen Inner Join, zeigt also nur die an, wo es für alle 3 Lagerorte Einträge gibt.
Prinzipiell müsste man Left Outer Joins auf die TLager machen, aber das bastle ich nicht zusammen.
Damits übersichtlicher wird, würde ich vorschlagen:
3 Views die jeweils einen Lagerort ausgeben und die dann in einer 4. View zusammenfassen.
Bitte warten ..
Mitglied: desoleure
04.10.2007 um 13:44 Uhr
Hmm, habe ich befürchtet

Ich danke dir aber herzlich für deine Hilfe... und fürs Verschieben in die richtige Rubrik!

Byebye, Desoleure
Bitte warten ..
Ähnliche Inhalte
PHP
Abfrage SQL
gelöst Frage von dudeldoedelPHP3 Kommentare

Hallo zusammen, kann man das in einer SQL Abfrage erreichen ??? Feldwert lautet: {"565":{"textinput":{"comment":"1400"}}} als Ergebnis soll ausgelesen werden ...

Datenbanken
Hilfe bei SQL Abfrage
gelöst Frage von e51bomagDatenbanken9 Kommentare

Habe einfach eine Denkblockade und würde mich über Hilfe bei einer Datenbankabfrage freuen. Die Abfrage lautet wie folgt: SELECT ...

Windows Server
SQL Abfrage automatisch exportieren
Frage von Andinistrator1Windows Server6 Kommentare

Hallo Zusammen, kurz und knapp: Ich habe eine SQL Abfrage. Diese soll automatisch, z.B. per Agend 1x/Nacht ausgeführt werden. ...

Datenbanken
Hilfe bei SQL-Abfrage
gelöst Frage von emeriksDatenbanken5 Kommentare

Hi, gegeben: MS SQL Server 2005 eine DB mit 3 Tabellen Tabelle "Objekte" 2 Spalten: ID, Name Tabelle "Eigenschaften" ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 3 StundenVerschlüsselung & Zertifikate

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 14 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 16 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...