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

Mitglied: desoleure

desoleure (Level 1) - Jetzt verbinden

04.10.2007, aktualisiert 13:44 Uhr, 3110 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
Datenbanken
MS-SQL-Server + T-SQL+Batch
Frage von kallewirschDatenbanken4 Kommentare

Hallo Gemeinde, mal wieder ein Problem aus dem Bereich des MS-SQL-Servers. Folgendes Thema: Nachts sollen automatisch Backups der DBen ...

Datenbanken
SQL Frontend?
Frage von sschultewolterDatenbanken8 Kommentare

Hallo, bin auf der Suche nach einer MySQL Frontend Software. Zum Aufbau: Auf einem Debian Rechner läuft eine MySQL ...

Windows Server
SQL-Errorlogs
Frage von kellbiddenWindows Server3 Kommentare

Hallo Ich hab den SQL-Server neu übernommen. Nun habe ich bereits eine Frage: Wo finde ich die Error-Logs des ...

Datenbanken
SQL - FRAGE
Frage von MiStDatenbanken11 Kommentare

Guten Morgen, ich habe ein ein SQL-Script, welches mir eine Liste aufzeigt. Jetzt ist es so, dass es Artikel ...

Neue Wissensbeiträge
Humor (lol)
Preisvertipper
Information von Dilbert-MD vor 18 StundenHumor (lol)6 Kommentare

Moin! weil heute Freitag ist, zeige ich Euch den Preisvertipper der Woche: vergesst den Acer Predator 21x, der ist ...

Windows Update
Sicherheitsupdate für SQL Server 2014 SP3
Information von sabines vor 1 TagWindows Update2 Kommentare

Für den SQL Server 2014 existiert ein Sicherheitsupdate. Laut KB Artikel wird es als CU3 angezeigt: Server 2014 SP3 ...

Backup

Veeam Agent für MS Windows - neue Version verfügbar (bedingt jedoch offenbar .NET Framework 4.6)

Information von VGem-e vor 2 TagenBackup1 Kommentar

Moin Kollegen, einer unserer Server zeigte grad an, dass für o.g. Software ein Update verfügbar ist. Ob ein evtl. ...

Python

Sie meinen es ja nur gut - Microsoft hilft python-Entwicklern auf unnachahmliche Weise

Information von DerWoWusste vor 4 TagenPython2 Kommentare

Stellt Euch vor, Ihr nutzt python unter Windows 10 und skriptet damit regelmäßig Dinge. Nach dem Update auf Windows ...

Heiß diskutierte Inhalte
Windows Update
WSUS - erforderlich Updates
Frage von emeriksWindows Update24 Kommentare

Hi, ein gängiges Verfahren, welche Updates man am WSUS-Server genehmigen soll und welche nicht, beruft sich darauf, dass man ...

Netzwerkgrundlagen
Neue Serverumgebung von 0 aufbauen
Frage von JacareNetzwerkgrundlagen20 Kommentare

Hallo zusammen, ich bin noch nicht lange hier und weiß nicht, ob meine Frage daher etwas ungewöhnlich ist. Ich ...

Off Topic
Installationskosten Verkabelung
Frage von Xaero1982Off Topic14 Kommentare

Moin Zusammen, ich bräuchte mal ein paar Meinungen, weil ich mir da gerade echt nicht ganz sicher bin. Ich ...

Debian
Alle Verbindungen bis auf eine IP Adresse blockieren
Frage von BananenmeisterDebian13 Kommentare

Hallo Zusammen, Ich habe einen Hyper-V Server auf dem ein debian (ohne desktop) läuft. Dort drauf ist ein Webserver ...