NSN Posted December 7, 2018 Share Posted December 7, 2018 (edited) Also SQL und ich werden wahrscheinlich keine Freunde. Ich kann machen was ich will ich versteh das Zeug nicht. Ich versuche eine Abfrage zu machen welche folgende Informationen ausspucken soll: Lieferant -- Artikelname -- Artikelnummer -- Menge Die Abfrage soll für bestimmte Bestellungen sein wobei die Bestellnummer für die Ausgabe nicht relevant ist (nur für die Auswahl der Daten). Mengen sollten zusammengefasst werden, also wenn ein Artikel in mehreren Bestellungen auftaucht brauche in den Artikel nur einmal in der Liste aber mit der Gesamtmenge aus allen Bestellungen. Geordnet werden soll das Ganze nach Lieferant sodass die Artikel eines Lieferanten nicht über die ganze Tabelle verteilt sind sondern untereinander. Eigentlich wollte ich es dann sogar nochmals sortieren dass die Artikel bei den Lieferanten dann nach ABC sortiert sind aber da die Ersten 3 Punkte schon ein unüberwindbares Hindernis sind hab ich die Idee wieder verworfen. Was ich bisher laienhaft zusammengebastelt habe hat bisher nicht gefruchtet und nur eine leere Tabelle ausgeworfen. SELECT s.name AS Lieferant, od.product_name AS Artikel, od.product_reference AS Artikel Nr, od.product_quantity AS Menge, FROM `ps_order_detail` od LEFT JOIN `ps_order_detail` od ON o.`id_order` = od.`id_order` LEFT JOIN `ps_supplier` od ON s.`product_reference` = od.`product_reference`` GROUP BY od.`product_name` SORT BY s.name ASC WHERE od.`id_order` =1166,1167, Bei WHERE wollte ich die Bestellungen eingeben also je nachdem welche ich grad brauche. Wo liegt mein Denkfehler. Wäre echt dankbar wenn mir jemand weiterhelfen kann. Edited December 8, 2018 by NSN (see edit history) Link to comment Share on other sites More sharing options...
SliderFlash Posted December 7, 2018 Share Posted December 7, 2018 (edited) vielleicht hilft das hier https://www.php-einfach.de/mysql-tutorial/komplexere-datenabfrage/ Beispiel: Möchte man beispielsweise nach einem Nutzer mit einer gewissen E-Mail-Adresse suchen, so müssen wir das Argument per Anführungszeichen umschließen. $sql = "SELECT * FROM users WHERE email = '[email protected]'"; Edited December 7, 2018 by SliderFlash (see edit history) Link to comment Share on other sites More sharing options...
Whiley Posted December 8, 2018 Share Posted December 8, 2018 SELECT s.name AS Lieferant, od.id_order, od.product_reference AS ArtNr, od.product_name AS Artikel, SUM(od.product_quantity) AS Menge FROM ps_order_detail od LEFT JOIN ps_product p ON (p.id_product = od.product_id) LEFT JOIN ps_supplier s ON (s.id_supplier = p.id_supplier) GROUP by od.product_name ORDER BY s.name ASC Grüsse Whiley Link to comment Share on other sites More sharing options...
NSN Posted December 8, 2018 Author Share Posted December 8, 2018 Danke für den Link SliderFlash. Ich hab die Seite auch schon mal gefunden aber in Sachen SQL werd ich wirklich nicht schlauer, egal was ich lese. @Whiley Danke für die Abfrage. Eine Frage habe ich noch dazu. Ich würde gerne die Ausgabe nur für bestimmte Bestellungen haben. Ich habe das versucht mittels WHERE zu machen, erhalte aber entweder beim abspeichern eine Fehlermeldung oder beim Abrufen eine leere Tabelle. Ich bräuchte die Tabelle z.B. für die Bestellungen 1166,1167 und 1168 (zusammengefasst). Der Sinn dahinter ist dass es dann eine Art Einkaufsliste ausspuckt welche sagt dass ich für die abgefragten Bestellungen bei Lieferant A von Produkt P 4 Stück brauche, bei Lieferant B von Produkt Q 2 Stück usw. Als Beispiel: Bestellung 1166 hat 2 Stück Produkt P und 1 Stück Produkt Q Bestellung 1167 hat 1 Stück Produkt P und 1 Stück Produkt R Bestellung 1168 hat 3 Stück Produkt P und 2 Stück Produkt Q sowie 2 Stück Produkt R Tabelle sollte dann ausgeben: Lieferant Produkt Menge A P 6 B Q 3 B R 3 Ich dachte es sollte mit WHERE od.`id_order` =1166,1167, 1168 am Ende der Abfrage gehen aber weit gefehlt. Link to comment Share on other sites More sharing options...
SliderFlash Posted December 8, 2018 Share Posted December 8, 2018 vor 2 Stunden schrieb NSN: Der Sinn dahinter ist dass es dann eine Art Einkaufsliste ausspuckt welche sagt dass ich für die abgefragten Bestellungen bei Lieferant A von Produkt P 4 Stück brauche, bei Lieferant B von Produkt Q 2 Stück usw. Im AC kann man Einstellen ob Admin nach einer bestimmten anzahl an Produkten automatisch einen E-Mail bekommt in dem steht das nur noch wenige Anzahl vorhanden ist, dabei kann man auch die Zahl einstellen ab welcher anzahl der Admin informiewrt wird und individuel für jedes Produkt.. Link to comment Share on other sites More sharing options...
NSN Posted December 8, 2018 Author Share Posted December 8, 2018 Ich glaube du hast mich da falsch verstanden. Ich brauch keine Info wenn der Lagerstand zu gering ist sondern brauche eine Liste wo ich die Artikel von bestimmten Bestellungen aufgelistet habe damit ich weiß bei welchem Lieferant ich von welchem Artikel wie viel brauche. Nicht fürs Lager sondern für die aktuellen Bestellungen. Wir haben über 700 Artikel im Angebot aber nur wenige davon am Lager. Den Großteil beziehen wir täglich über diverse Lieferanten. Bei nur 1 oder 2 Bestellungen am Tag mit wenigen Artikeln je Bestellung ist es ja kein Problem das händisch zusammen zuschreiben, aber wenn man das bei 10 bis 20 machen muss und dann noch bunt gefächerte Artikel drin sind ist das doch ein größerer Zeitaufwand. Link to comment Share on other sites More sharing options...
SliderFlash Posted December 8, 2018 Share Posted December 8, 2018 hi NSN, Du möchtest den übesicht über die Bestellungen haben damit du Rechtzeitig beim Lieferanten nachbestellen kannst ? Auch die Rechtzeitige individuelle Produkt Bestellungen beim Lieferanten erledigt Prestashop Automatisch nach Einstellung im AC, dabei kannst du die menge und Lieferanten auch einstellen. Gruß Sf Link to comment Share on other sites More sharing options...
Whiley Posted December 8, 2018 Share Posted December 8, 2018 vor 4 Stunden schrieb NSN: ch dachte es sollte mit WHERE od.`id_order` =1166,1167, 1168 am Ende der Abfrage gehen aber weit gefehlt. Du stellt die WHERE Bedingung vor die GROUP Anweisung, als Operator das "=" und fragst eine Bedingung ab, weitere dann mit OR anhängen SELECT s.name AS Lieferant, od.id_order, od.product_reference AS ArtNr, od.product_name AS Artikel, SUM(od.product_quantity) AS Menge FROM ps_order_detail od LEFT JOIN ps_product p ON (p.id_product = od.product_id) LEFT JOIN ps_supplier s ON (s.id_supplier = p.id_supplier) WHERE od.id_order=1166 OR od.id_order=1167 GROUP by od.product_name ORDER BY s.name ASC Ggfs kannst du auch einen anderen Operator verwenden wie z.B.: >1166 Grüsse Whiley Link to comment Share on other sites More sharing options...
NSN Posted December 8, 2018 Author Share Posted December 8, 2018 Danke Whiley. Du hast mir grad viel Kopfschmerzen und Zeit erspart. Ich hab beide Varianten, also mit "=" Bedingung (jetzt weiß ich ja dass das immer nur eine Bedingung sein kann) sowie mit " > " versucht und erhalte genau was ich wollte. Die Sortierung habe ich wie folgt erweitert "ORDER BY s.name ASC, od.product_name ASC" damit die Produkte auch innerhalb der Lieferanten sortiert sind. Viele Grüße Stefan Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now