Datensätze während der Abfrage selektieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datensätze während der Abfrage selektieren

    Ich muss eine Preisliste auslesen, hier gibt es einmal reguläre Preise und einmal kundenspezifische Preise. Wenn ein kundenspezifischer Preis existiert muss dieser ausgebenen werden, ansonsten der reguläre Preis.

    Problem habe ich nun mit der Abfrage, da ich um die Unterscheidung zu treffen zuerst eine Abfrage über alle Datensätze der Preisliste machen muss und wenn ich die Daten dann ausgelesen habe, entweder den regulären Preis selektiere oder den kundenspezifischen.

    Die Ausgabe muss ohne PHP realisiert werden, ich müßte demnach mit Schleifen in MySQL arbeiten und sobald zwei gleiche Artikelnummern ausgebenen werden anhand dem Feld mit der Kundennummer unterscheiden welcher Datensatz ausgebene wird und welcher nicht.

    Ich finde momentan jedoch keinen Ansatz um diese Abfrage innerhalb einer Select-Anweisung zu realisieren. Kann mir jemand sagen ob sich das überhaupt realisieren läßt und wenn ja, vielleicht einen Ansatz geben wie das gemacht werden kann?
    » http://www.htaccess-generator.com

  • #2
    Re: Datensätze während der Abfrage selektieren

    Original geschrieben von bweichel
    Ich finde momentan jedoch keinen Ansatz
    Und wir finden - wieder mal - keine vernünftige Beschreibung der Datenstruktur.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Wie sieht deine Datenbankstruktur aus? Ohne diese Angabe kann man dir nicht helfen!

      Kommentar


      • #4
        Sorry, ich hoffe das ist so in Ordnung... wie man sieht, gibt es für den Artikel FL11003007 zwei Preise. Bin ich jetzt der Kunden 12103 müssen die 2,20 EUR ausgegeben werden, ansonsten der Preis 2,34 EUR.

        kundennumm | artikelnum | preisstaff | anzahl | preis1
        -------------------------------------------------------
        | FL11003007 | 2 | 1.000 | 2.340
        -------------------------------------------------------
        12103 | FL11003007 | 2 | 1.000 | 2.200
        -------------------------------------------------------
        | FL11003410 | 2 | 1.000 | 2.780
        -------------------------------------------------------
        | FL11003185 | 2 | 1.000 | 2.780
        -------------------------------------------------------
        | FL11003110 | 2 | 1.000 | 2.780
        -------------------------------------------------------
        | FL11003901 | 2 | 1.000 | 2.780
        -------------------------------------------------------
        | FL11003271 | 2 | 1.000 | 2.780
        -------------------------------------------------------
        | FL11003117 | 2 | 1.000 | 2.780
        -------------------------------------------------------
        » http://www.htaccess-generator.com

        Kommentar


        • #5
          1. das ist keine DB-Struktur
          2. bei so einem verkorsten Design und halbherzig gelieferten Daten kann/will man nicht unbedingt was sagen.

          Kommentar


          • #6
            So besser? Siehe Anhang!

            Sorry, aber die Leerzeichen wurde in meiner erstellten Tabelle nicht angenommen, sonst hätte es untereinander gestanden und etwas besser ausgesehen...

            Vielen Dank für die Hilfe!
            Angehängte Dateien
            » http://www.htaccess-generator.com

            Kommentar


            • #7
              Datensätze zur Artikelnummer selektieren, mit Kundenummer gleich xyz oder leer; danach sortieren lassen, ob Kundennummer gleich xyz oder leer; und mit LIMIT davon nur den ersten Satz nehmen ...?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Habe nun mal folgendes geschrieben:

                PHP-Code:
                SELECT *
                FROM _sbb_preislis
                WHERE Artikelnum LIKE 
                'FL11003%'
                AND Preisstaff '2'
                AND Anzahl '1'
                AND (Kundennumm ''
                OR Kundennumm '12103')
                ORDER BY Kundennumm DESCPreis1 ASC 
                Soweit funktioniert alles bestens, wollte jetzt noch mit GROUP BY Artikelnum die doupletten rausfiltern. Momentan bekomme ich ja mit dieser Abfrage noch zwei Datensätze, einmal der Datensatz mit dem regulären Preis und dann noch den Datensatz mit dem kundenspezifischen Preis (sofern einer vorhanden ist). Entscheident ist hierfür aber die Sortierung und die muss ich leider immer nach der GROUP BY Klausel einfügen und somit kommt es bei kundenspezifischen Preisen die höher sind als der reguläre Preis zu einer Fehlanzeige. Es wird dann wieder der reguläre Preis statt dem kundenspezifischen ausgegeben... es müßte also zuerst sortiert werden und dann GROUP BY angewendet werden. Gibt es da eine Möglichkeit? Oder mache ich da generell was falsch?
                » http://www.htaccess-generator.com

                Kommentar


                • #9
                  Letzter Teilsatz vorheriger Antwort.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Ja klar mit LIMIT hätte ich dann den EINEN korrekten Datensatz. Ich brauche aber alle Preise von dem Style (als Style wird hier der eigentliche Artikel bezeichnet, ein Style kann aus mehreren Unterartikel (Artikel mit Größen und Farben bestehen). Also das Ergebnis meiner Abfrage ist schon korrekt.

                    Ich brauche nur noch eine Möglichkeit die Douplette auszufiltern. Sorry, ich hoffe das ich mich halbwegs verständlich ausgedrückt habe...
                    » http://www.htaccess-generator.com

                    Kommentar


                    • #11
                      Na dann wohl eher Subquery.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        so???
                        funktioniert zumindest... auch richtig gedacht?

                        PHP-Code:
                        SELECT p1.* 
                        FROM (
                            
                        SELECT *
                            
                        FROM _sbb_preislis
                            WHERE Artikelnum LIKE 
                        'FL11003%'
                            
                        AND Preisstaff '2'
                            
                        AND Anzahl '1'
                            
                        AND (Kundennumm ''
                            
                        OR Kundennumm '14344')
                            
                        ORDER BY Kundennumm DESCPreis1 ASC
                        p1
                        GROUP BY p1
                        .Artikelnum 
                        » http://www.htaccess-generator.com

                        Kommentar


                        • #13
                          Einfach SELECT DISTINCT?! Oo

                          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                          Wie man Fragen richtig stellt

                          Kommentar


                          • #14
                            In der ersten Anweisung? Bringt doch das gleiche oder? Oder hat Distinct gegenüber GROUP BY Vorteile?
                            » http://www.htaccess-generator.com

                            Kommentar

                            Lädt...
                            X