2016-08-22 6 views
0

Ich versuche, meinen Code einzurichten, wo ich eine Systemsteuerung für meine Vertriebsmitarbeiter habe. Von meiner Systemsteuerung aus kann ich steuern, welche Kunden ein Rep ruft basierend auf dem Artikel, den der Kunde gekauft hat.MYSQL (WO - IF - SELECT/IN-Anweisung)

d. Wenn ich "Autos" in meiner Systemsteuerung für Sales Rep 01 zugewiesen habe, würde er nur Kunden anrufen, die Spielzeug in der Kategorie "Autos" gekauft haben. Und alle verschiedenen Spielzeuge in meiner Kategorie "Autos" sind in einer separaten Datei namens "Fahrzeuge" gespeichert.

Meine Dateien sind wie folgt:

customer (File) 
+--------+-----------+--------+ 
| name | phone  | toy | 
+--------+-----------+--------+ 
| Gail | 777-1234 | Truck | 
| June | 777-1235 | Doll | 
| Mary | 777-1236 | Racer | 
| Bill | 777-1237 | Ball | 
| Jon | 777-1238 | Jeep | 
+--------+-----------+--------+ 



control_panel (File) 
+----------+--------+ 
| user  | desc | 
+----------+--------+ 
| sales_01 | Cars | 
+----------+--------| 


vehicles (File) 
+---------+ 
+ item | 
+---------+ 
| Truck | 
| Racer | 
| Jeep | 
+---------+ 

Bei dem Versuch, aus diesen Code zu testen, habe ich diesen Teil meines Codes arbeiten.

select 
    c.name , c.phone 
FROM 
    customer c 
WHERE 
    c.toy IN (
      SELECT 
       v.item 
      FROM 
       vehicles v 
      ) 

Jetzt versuche ich meine WHERE-Anweisung zu konditionieren, so dass nur dann, wenn ich „Cars“ in meinem Control Panel-Bildschirm für Benutzer „sales_01“ wähle, dann Kunden, die Autos nur auf dem Rufbild zeigen gekauft werden Benutzer "Verkauf_01".

Dies ist ein Beispiel für einen Teil des Codes, den ich getestet habe, aber nicht richtig funktionieren kann.

SELECT 
    c.name , c.phone 
FROM 
    customer c , control_panel p 
WHERE 
    (IF p.desc = "Cars" 
     THEN (c.toy 
      IN (SELECT 
        v.item 
       FROM 
        vehicles v) 
      ) 
    END) 

Jede Hilfe wird geschätzt. Danke.

+0

Ich bekomme, dass Sie Tabellen und Beispielcode haben. Aber ich weiß nicht, was du erreichen willst. Können Sie die Frage bearbeiten und Beispielcode und gewünschte Ergebnisse angeben? –

+0

Ihr Schema macht keinen Sinn - Sie sollten es wirklich normalisieren. – symcbean

Antwort

1

Zunächst empfehle ich Ihnen, Ihr Schema zu refaktorieren, indem Sie ein Feld category zu Ihrer vehicles Tabelle hinzufügen. Dies ermöglicht eine ordnungsgemäße Beziehung zwischen Ihrem control_panel und customer. In diesem Fall könnten Sie einfach SELECT c.name, c.phone FROM customer c LEFT OUTER JOIN vehicles v ON c.toy = v.items WHERE v.category = 'Cars' tun. Ich hätte gerne andere Vorschläge hinzugefügt, aber ich fühle, dass Sie etwas wollen, das gerade jetzt funktionieren könnte. Außerdem habe ich momentan nicht viel Zeit zu verlieren. Hoffe das hilft.