Сложно: Как составить список всех кредитных карт, связанных с именем клиента, при случайном или произвольном выборе имени клиента - PullRequest
1 голос
/ 20 апреля 2019

Мне трудно разобраться в этом вопросе.Допустим, есть список имен клиентов и кредитных карт, связанных с ним с данным именем, я хочу отобразить кредитные карты, связанные с ними, но выбирая их произвольно или случайно.Я попытался сделать это вручную, жестко закодировав имя, но я хочу, чтобы запрос брал имена случайным образом.

Я попытался сделать это вручную, жестко закодировав имя, но я хочу, чтобы запрос брал имена случайным образом.

MYSQL:

SELECT credit_card.`CreditCard#` AS `Creditcard Number`,  customer.customername AS `Name`
FROM credit_card, customer, account
WHERE customer.CustomerName = "Bob white" ** 

Это жестко запрограммировано

AND holds_account.`Customer#` = customer.`Customer#`
AND credit_card.`CreditCard#` = holds_account.`CreditCard#`

Я хочу отображать связанные с ними кредитные карты, но выбирая имена произвольно или случайно.Таблица клиентов EX: ABAD

Номер кредитной карты клиента

         A: 12321432 
         B: 234324324
         A: 1231312213
         D: 234324433

Ответ должен выглядеть следующим образом:

A 12321432
A 1231312213

Имена должны быть выбраны случайным образом.

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Вы можете использовать ORDER BY RAND() LIMIT 10, если хотите выбрать 10 случайных записей.

Пример: SELECT * FROM customer ORDER BY RAND() LIMIT 10

0 голосов
/ 20 апреля 2019

Во-первых, научитесь писать SQL, используя правильный синтаксис JOIN:

SELECT c.`CreditCard#`,  
       c.customername AS `Name`
FROM credit_card cc JOIN
     customer c
     ON cc.`Customer#` = c.`Customer#` 

Я не думаю, что accounts необходим, но вы можете добавить его, если он есть.

Если вы хотите, чтобы все кредитные машины были выбраны случайным образом для клиента, выберите случайных клиентов в подзапросе:

SELECT c.`CreditCard#`,  
       c.customername AS `Name`
FROM credit_card cc JOIN
     (SELECT c.*
      FROM customer c
      ORDER BY rand()
      LIMIT 10
     ) c
     ON cc.`Customer#` = c.`Customer#` ;

Это предполагает, что все клиенты имеют кредитные карты. Если это не так, то вам, возможно, потребуется включить логику для этого:

SELECT c.`CreditCard#`,  
       c.customername AS `Name`
FROM credit_card cc JOIN
     (SELECT c2.*
      FROM customer c2
      WHERE EXISTS (SELECT 1 FROM credit_card cc2 WHERE cc2.`Customer#` = c.`Customer#`)
      ORDER BY rand()
      LIMIT 10
     ) c
     ON cc.`Customer#` = c.`Customer#` ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...