2017-02-13 4 views
0

Ich brauche Hilfe herauszufinden, welche Abfrage ausgeführt werden soll, um nach einem Kunden zu suchen. Ich baue ein "Geldverleih" -Programm, das eine Suchfunktionalität hat. Der Benutzer kann die im System angezeigten Kunden über customerFirstName, customerSecondName und ob sie aktiv sind oder nicht, filtern.MySQL: Eine Abfrage, die aktive Kunden in der Datenbank findet

Die Sache ist, es gibt keine status Spalte in der Kundentabelle. Ein Kunde wird als Aktiv betrachtet, wenn eines oder mehrere seiner Konten den Status = 'Aktiv' haben. Ein Kunde Inaktive angesehen wird, wenn sie alle Konten nicht geöffnet haben, oder alle ihre Konten haben status = ‚bezahlt‘

Meine SELECT-Anweisung ist:

SELECT 
customer.customerID, 
customerFName, 
customerLName, 
gender, 
civilStatus, 
birthDate, 
homeAddress, 
jobDescription, 
workingAddress, 
telNumber, 
phoneNumber, 
pinNumber 

Ein Kunde von Vor- und Nachnamen gefiltert durch diese Bedingung:

WHERE customerFName LIKE '%*userProvidedFirstName*%' AND customerLName LIKE '%*userProvidedLastName*%' 

Das ist mein Datenbankschema ist:

This is my database ERD

+0

Ist es sicher anzunehmen, dass, wenn der Kunde hat keine 'Active' Konten, der Kunde s "Inaktiv"? –

+0

@VitaliiStrimbanu ja :) –

Antwort

1

Sie könnten versuchen, den Status in den Auswahlteil bekommen und dann basierend Filterung auf einem Unter wählen:

select * from 
    (SELECT 
    customer.customerID, 
    customerFName, 
    customerLName, 
    gender, 
    civilStatus, 
    birthDate, 
    homeAddress, 
    jobDescription, 
    workingAddress, 
    telNumber, 
    phoneNumber, 
    pinNumber 
    case when (select count(*) from account where account.customerID = customerID and account.status = 'Active') > 0 
    then 'Active' else 'Inactive' end as status 
from customer) 
    WHERE customerFName LIKE '%*userProvidedFirstName*%' AND customerLName LIKE '%*userProvidedLastName*%' AND status = *Status* 
Verwandte Themen