Jump to content

Consulta SQL direcciones de correos por un país especifico


Recommended Posts

Buenos días a todos

soy muy nuevo en todo lo que es sql y necesitaría vuestra ayuda,

quisiera obtener todas las direcciones de mail de los clientes registrados en la tienda de un país especifico, estoy toda la mañana buscando pero no he encontrado nada...

me quedo en 

SELECT email FROM ps_customer WHERE ps_country

no se si voy bien o como agregar el id del país

 

muchas gracias a quien me pueda ayudar

 

 

Link to comment
Share on other sites

Hola @nanolibero

El país del usuario está en su dirección, así que debes hacer un "join" de ambas tablas:

SELECT a.email FROM ps_customer a, ps_address b WHERE a.id_customer = b.id_customer AND b.id_country=xx

donde "xx" es el id del pais de la tabla ps_country;

Si te resulta mas fácil, podemos simplificar este valor complicando un poco la sql:

SELECT a.email FROM 
	ps_customer a, 
	ps_address b,
	ps_country c 
WHERE 
a.id_customer = b.id_customer AND 
b.id_country = c.id_country AND
c.iso_code='ES'

Ahora en lugar del id puedes usar el Iso_code del país. 

Solo una nota. Aunque no es lo normal, puesto que el país de un usuario lo obtenemos de la dirección, si un usuario tiene varias direcciones en el país aparecerá su email varias veces.  Tantas como direcciones tenga. Evitamos esto usando la función distinct:

SELECT distinct(a.email) FROM 
	ps_customer a, 
	ps_address b,
	ps_country c 
WHERE 
a.id_customer = b.id_customer AND 
b.id_country = c.id_country AND
c.iso_code='ES'

Espero te sirva.

Edited by Manuel_GT (see edit history)
  • Like 1
Link to comment
Share on other sites

hace 1 hora, Manuel_GT dijo:

Hola @nanolibero

El país del usuario está en su dirección, así que debes hacer un "join" de ambas tablas:

SELECT a.email FROM ps_customer a, ps_address b WHERE a.id_customer = b.id_customer AND b.id_country=xx

donde "xx" es el id del pais de la tabla ps_country;

Si te resulta mas fácil, podemos simplificar este valor complicando un poco la sql:

SELECT a.email FROM 
	ps_customer a, 
	ps_address b,
	ps_country c 
WHERE 
a.id_customer = b.id_customer AND 
b.id_country = c.id_country AND
c.iso_code='ES'

Ahora en lugar del id puedes usar el Iso_code del país. 

Solo una nota. Aunque no es lo normal, puesto que el país de un usuario lo obtenemos de la dirección, si un usuario tiene varias direcciones en el país aparecerá su email varias veces.  Tantas como direcciones tenga. Evitamos esto usando la función distinct:

SELECT distinct(a.email) FROM 
	ps_customer a, 
	ps_address b,
	ps_country c 
WHERE 
a.id_customer = b.id_customer AND 
b.id_country = c.id_country AND
c.iso_code='ES'

Espero te sirva.

muchas pero muchas gracias @Manuel_GT por tu amabilidad, lo probaré pero ya es de agradecer tu tiempo y disponibilidad en responder 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...