Fetch filas ya sea con una condición de coincidencia o todas las filas si no hay filas coincidentes

prograshid:

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.comy 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_countriescondició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_countriesla columna.

También quisiera saber si me necesidad de reestructurar esta tabla en 2 o más tablas para obtener el resultado deseado.

GMB:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=347671&siteId=1
Recomendado
Clasificación