2016-04-20 20 views
0

Hier ist eine Tabelle mit Barcodes, die zu verschiedenen Lagern gehört.Parameter für verschachtelte MySQL-Ansichten

Barcode | Warehouse 
_____________________________ 
    1111111 | A 
    2222222 | B 
    1111111 | C 
    3333333 | A 

Und hier ist eine Tabelle mit Boxen mit Barcodes.

Das verfügbare Lager jedes Lagers ist seine Menge in der ersten Tabelle plus alle Menge in Kisten. Beispiel für Lager A:

Barcode 
_________ 
1111111 (from its warehouse) 
3333333 (from its warehouse) 
1111111 (from a box) 
2222222 (from a box) 

Dies ist ein vereinfachtes Beispiel. Nachdem ich die Gesamtzahl der Barcodes abgerufen habe, überquere ich sie mit vielen anderen Abfragen und Tabellen, um sie in einen lesbaren Bericht umzuwandeln.

Ok, Die Idee wäre eine serverseitige Abfrage. Jeder Client (VBA msaccess) ruft die Abfrage ab und filtert sie mit ihrem Warehouse-Code.

Kaispeicher A würde es so nennen:

select * from finalQuery wo Lager wie ‚A‘ < --- aber es wird nicht funktionieren, weil Boxen Barcodes haben das Lagerfeld nicht, so, sie würden ausgeschlossen werden. Die "Where" -Klausel sollte vor UNION ALL ausgeführt werden.

Wäre es möglich, Parameter zu verwenden, um ausschließlich Barcodes eines Lagers und Barcodes aller Boxen in einer serverseitigen Abfrage abzurufen? Obwohl der Benutzer die letzte Abfrage mit seinem Code aufruft, sollte er den Parameter auf die erste verschachtelte Abfrage verschieben.

Oder ein anderer Trick? Vielleicht ist mein Plan falsch?

Das Problem, Abfragen auf der Client-Seite zu manipulieren, ist, dass es mühsam LANGSAM wird, denn wie gesagt, nach dem Verbinden von Barcodes, verwende ich die resultierende Abfrage zum Erstellen anderer Abfragen.

Ich hoffe, ich erklärte es deutlich. Es ist etwas kompliziert zu erklären. Ich würde schätzen jeden Vorschlag, Trick, Idee, etc.

Vielen Dank.

Antwort

0

Ich denke, was Sie suchen, ist eine JOIN-Anweisung. Sie können die Barcode-Warehouse-Tabelle mit der Barcode-Box-Tabelle unter Verwendung der gemeinsamen Spalte Barcode verknüpfen. Dieser Artikel ist eine großartige Erklärung: http://www.tutorialspoint.com/mysql/mysql-using-joins.htm.

Ihre Server-Seite Abfrage wird, etwas am Ende wie folgt:

SELECT Barcode, Box, Warehouse FROM Barcode-Warehouse LEFT JOIN Barcode-Box USING (Barcode); 

Dies in einer Ergebnismenge zur Folge haben soll, die Barcode, Box, und Lager in jeder Zeile hat. Ihre Benutzer wären dann in der Lage, das Ergebnis nach Warehouse zu filtern und nur die Datensätze abzurufen, an denen sie interessiert sind.

+0

Das hat nicht funktioniert, weil das barcodes nicht addierte. Ich habe einen Screenshot davon gemacht: http://i.imgur.com/CLBm2Ix.png – Fran

0

einen Weg gefunden, um es zu lösen: Can I create view with parameter in MySQL?

ich die erste Abfrage filtern, indem Sie fügte hinzu:

"wo Lager = function()"

Als ich die letzte Abfrage aufrufen, ich hinzufügen der Parameter für die Funktion wie im Beitrag erläutert. Einfach, einfach.

danke

Verwandte Themen