Frage : Mysql speicherte proc Durchlauf alle Werthilfe

Hallo haben guys.

I einen gespeicherten procedure.
For Speicher angebracht, einbrennen, abreisen, subd, Produkt, categ Gewebe, Jahreszeit und Kaufparameter, wenn ich ALLE WERTE,
Is dort eine einfachere schnellere Weise dann, using REGEXP und es „[- 0-9]“ im Anruf für everything.

is dort eine Weise z.B. führen, den Parameter gerade NICHT einzuschließen wünsche, also ist alles passed.

Like, wenn MARKE = '' es alles dann. führen.

Hope, das sinnvoll. ist.
Kj
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
DELIMITER $$
VERFAHREN FALLENLASSEN, WENN `BW `$$ EXISTIERT
VERFAHREN `BW `VERURSACHEN (IM SPEICHER VARCHAR (2555),
                      IN DER MARKE VARCHAR (2555),
                      IN REISEN VARCHAR AB (2555),
                      IN SUBD VARCHAR (2555),
                      IM PRODUKT VARCHAR (2555),
                      IN CATEG VARCHAR (2555),
                      IM GEWEBE VARCHAR (2555),
                      REIFES VARCHAR (2000),
                      IM KAUF VARCHAR (2000),
                      IN DER ART VARCHAR (255),
                      IN STARTDATE VARCHAR (255),
                      IN ENDDATE VARCHAR (255))

ANFANGEN

    @BWS = CONCAT EINSTELLEN („

S.storename vorwählen,
       s.storenumber,
       s.brandname,
       s.brandnumber,
       s.deptname,
       s.deptcode,
       s.subdname,
       s.subdcode,
       s.prodname,
       s.prodcode,
       s.catename,
       s.catecode,
       s.fabricname,
       s.fabricno,
       s.seasname,
       s.seascode,
       s.purchflagdescription,
       s.purchflagcode,
       s.stylecode,
       s.description,
       s.datefirstrecv,
       s.datelastrecv,
       Summe (h.quantity) wie VERKAUFT,
       s.datelastsold,


(auserwähltes ifnull (Summe (h.quantity), 0)
von Geschichte h
wo (h.stockcode = s.stockcode
und h.storenumber = s.storenumber)
und h.subtranstype = 6
und s.storenumber INNEN („, SPEICHER, ")
und s.brandnumber INNEN („, MARKE, ")
und s.deptcode REGEXP „, REISEN,“ ab
und s.subdcode REGEXP „, SUBD,“
und s.prodcode REGEXP „, PRODUKT,“
und s.catecode REGEXP „, CATEG,“
und s.fabricno REGEXP „, GEWEBE,“
und s.seascode REGEXP „, JAHRESZEIT,“
und s.purchflagcode REGEXP „, KAUF,“
und s.stylecode MÖGEN „, ART,“
und (s.datefirstrecv oder s.datelastrecv oder s.datelastsold) ist nicht ungültig
und h.transdate zwischen „, STARTDATE,“ und „, ENDDATE, ") als QTYRECV,


(auserwähltes ifnull (Summe (h.quantity), 0)
von Geschichte h
wo (h.stockcode = s.stockcode
und h.storenumber = s.storenumber)
und h.subtranstype < „4“
und s.storenumber INNEN („, SPEICHER, ")
und s.brandnumber INNEN („, MARKE, ")
und s.deptcode REGEXP „, REISEN,“ ab
und s.subdcode REGEXP „, SUBD,“
und s.prodcode REGEXP „, PRODUKT,“
und s.catecode REGEXP „, CATEG,“
und s.fabricno REGEXP „, GEWEBE,“
und s.seascode REGEXP „, JAHRESZEIT,“
und s.purchflagcode REGEXP „, KAUF,“
und s.stylecode MÖGEN „, ART,“
und (s.datefirstrecv oder s.datelastrecv oder s.datelastsold) ist nicht ungültig
und h.transdate zwischen „, STARTDATE,“ und „, ENDDATE, ") ONHAND




von der INNEREN Geschichte h styleperformance s VERBINDEN
AN (h.storenumber=s.storenumber
und h.stockcode=s.stockcode)
und h.subtranstype < „4“
und s.storenumber INNEN („, SPEICHER, ")
und s.brandnumber INNEN („, MARKE, ")
und s.deptcode RLIKE „, REISEN,“ ab
und s.subdcode RLIKE „, SUBD,“
und s.prodcode RLIKE „, PRODUKT,“
und s.catecode RLIKE „, CATEG,“
und s.fabricno RLIKE „, GEWEBE,“
und s.seascode RLIKE „, JAHRESZEIT,“
und s.purchflagcode RLIKE „, KAUF,“
und s.stylecode MÖGEN „, ART,“
und (s.datefirstrecv oder s.datelastrecv oder s.datelastsold) ist nicht ungültig
und h.transdate zwischen „, STARTDATE,“ und „, ENDDATE,“
Gruppe durch s.storenumber, s.stockcode
AUFTRAG DURCH VERKAUFSDESC
BEGRENZUNG 20 ");

#SELECT @bws;
B_w_s von den @bws VORBEREITEN;
B_w_s DURCHFÜHREN;
FREIGEBEN VORBEREITEN b_w_s;

$$ BEENDEN
BEGRENZER;

„BW `(„1.2.9.10“, „1.2.3.4.5.6.7.8.9.10.11.12.13.14.15“,““ [- 0-9] „BENENNEN „,““ [- 0-9] „„,““ [- 0-9] „„,““ [- 0-9] „„,““ [- 0-9a-z] „„,““ [- 0-9a-z] „„,““ [- 0-9a-z] '„,“ „%““, „„2010-06-01““, „„2010-07-03“ ")

Antwort : Mysql speicherte proc Durchlauf alle Werthilfe

und s.storenumber IN („, SPEICHER, ") „,
     FALL, WENN BRAND= "" dann "" sonst concat („und s.brandnumber IN (“, MARKE, ")“) ENDE,
„und s.deptcode REGEXP“, REISEN, „ab

O.K.I verfehlte ein ENDE.
Im Allgemeinen was es bedeutet, ist, am Teil, in dem Sie normalerweise die Schnur addieren

und s.brandnumber INNEN („, MARKE, ")

Zu Ihrem vollen SQL überprüft sie auf, ob Marke "" ist.  Wenn sie leer ist, fügt sie nichts der abschließenden Frage hinzu.  Gerade die FALL-Linie betrachtend, tut sie dies:

     FALL WENN BRAND= "" dann
         ""
     sonst
         concat („und s.brandnumber IN (“, MARKE, ")“)
     ENDE,

So fügt es irgendein „und s.brandnumber in ()“, wenn der Markenfilter nicht leer ist oder nichts hinzu (und folglich filtert der gesamte sql nicht auf Marke).

Mich informieren, wenn dieses unklar ist.
Weitere Lösungen  
 
programming4us programming4us