2011-08-17 2 views
0

Salut essayaient d'effectuer un choix de mysql qui ne va pas planifier et espérant que quelqu'un peut faire la lumière sur elle.mysql sélectionnez le problème

nous avons estimé plus de 10 000 enregistrements de fiches, un client peut avoir plusieurs enregistrements de liste pour différents emplacements. nous devons sélectionner toutes les listes de clients où au moins l'un des emplacements est égal à un emplacement spécifique. Par exemple, disons que le client 1 a une liste dans sheffiled, doncaster, leeds, wakefield et le client 2 a des listes à Londres et Brighton.

Maintenant, je veux sélectionner toutes les listes de clients où l'une des annonces est pour la zone sheffield.

Id espère récupérer les 4 lignes pour le client 1 parce que l'une de ses annonces est dans sheffield.

à cause de cet exemple permet de présumer que la table se compose de seulement customerId et LocationName

je dois sélectionner tous customerIds où l'un des locationNames = sheffield. Donc Id obtenir 4 lignes retruend avec l'ID cusotmer et les 4 emplacements

Comment écrivez-vous cette requête dans mysql? Im deviner subelect mais pas trop sûr.

Répondre

4
SELECT customerid FROM customers_location 
WHERE customerid IN(SELECT DISTINCT customerid FROM customers_location WHERE LocationName = 'sheffield') 
2

Quelque chose comme:

SELECT * FROM CUST_TABLE WHERE CUST_ID IN (
    SELECT DISTINCT CUST_ID FROM CUST_TABLE WHERE CUST_LOCN='Sheffield') 

Remarque; La clause distincte peut ne pas être strictement nécessaire, pas sûr. Cela vous donnerait par exemple. 4 dossiers pour le client xyz qui a un de leurs emplacements d'inscription comme Sheffield, qui je pense est ce que vous demandez.