Tengo una tabla sencilla
**targeted_url_redirect targeted_countries msg_type non_targeted_url**
http://new.botweet.com india,nepal,philippines NEW http://twisend.com
http://expapers.com United States,Canada OLD http://all.twisend.com
https://tweeasy.com india,england OLD http://all.twisend.com
Recibo tráficos en mi sitio web followerise.com
y quiero redirigir a los usuarios a las direcciones URL específicas basadas en sus países como se define en la tabla anterior. Soy capaz de escribir consulta para obtener filas para los usuarios que vienen de los países que son objetivo almacenado en mi base de datos. Pero estoy en busca de una solución para obtener todas las filas si la targeted_countries
condición no devuelve ninguna fila.
He escrito a continuación consultas.
SELECT * FROM tweeasy_website_redirection
WHERE message_type='OLD'
AND targeted_countries LIKE '%@country%'
Esta consulta me da deseaba filas si los visitantes procedentes de los países india
, england
, United States
,Canada
Pero quiero que todas las filas (2ª y 3ª) debe ser traída si un usuario procedentes de los países no se especifica en targeted_countries
la columna.
También quisiera saber si me necesidad de reestructurar esta tabla en 2 o más tablas para obtener el resultado deseado.
Uno de ellos utiliza la opción not exists
:
SELECT t.*
FROM tweeasy_website_redirection t
WHERE
t.message_type = 'OLD'
AND (
t.targeted_countries LIKE '%@country%'
OR NOT EXISTS (
SELECT 1
FROM tweeasy_website_redirection t1
WHERE t1.targeted_countries LIKE '%@country%'
)
)
Cuando se trata de la estructura de la mesa: un defecto de diseño es a lista de valores como la lista CSV almacenar. Usted debe tener dos mesas separadas: una para almacenar las direcciones URL, y el otro para almacenar la relación 1-N entre URLs y países. Algo como:
table "url"
id targeted_url_redirect msg_type non_targeted_url
1 http://new.botweet.com NEW http://twisend.com
2 http://expapers.com OLD http://all.twisend.com
3 https://tweeasy.com OLD http://all.twisend.com
table "url_countries"
url_id country
1 india
1 nepal
1 philippines
2 united states
2 canada
3 india
3 england