/ / mysql obtenir des résultats non existants - php, mysql

mysql obtenir des résultats non existants - php, mysql

En utilisant php et mysql,
J'ai une table "sous-domaines" qui contient des sous-domaines pour mon application, en fonction d'une catégorie. sous-domaines - id, cat_id, sous-domaine

Certaines catégories ont un sous-domaine et d’autres pas. Pour ceux qui n'ont pas de sous-domaine, je veux que le sous-domaine soit "www".

Maintenant, dans ma table de sous-domaines, il y a quelques valeurs, par exemple:

subdomains : id, cat_id, subdomain
1,  6,   "sales"
2,  7,   "infos"

Maintenant, j'ai un tableau de cat_id, par exemple $ aCatIds = array (1,5,6,8);

À la fin de la requête mysql, j'aimerais un résultat similaire à ceci:

array(
0 => (cat_id="1", subdomain="www") ,
1 => (cat_id="5", subdomain="www") ,
2 => (cat_id="6", subdomain="sales") ,
3 => (cat_id="8", subdomain="www") ,
)

Est-ce possible avec une seule requête mysql?

J'utilise php et j'ai essayé des choses comme ça:

$stmt = "select cat_id, ifnull("www", subdomain) as subdomain
from subdomains
where cat_id in (". implode(",", $aCatIds) .")";

Mais je n’obtiens que les valeurs définies (6 dans l’exemple ci-dessus), et je ne sais pas comment dire à mysql d’obtenir le tableau attendu.

Réponses:

0 pour la réponse № 1

Pour que cela fonctionne, vous devez (à gauche) rejoindre les données existantes (où le cat_id existe). Par exemple, si je suppose un cat existe une table dont le cat_id références, "t serait si:

SELECT c.id as cat_id,IFNULL(s.subdomain,"www")
FROM cat c
LEFT JOIN subdomains s
ON s.cat_id = c.id
WHERE c.id IN (1,2,3,4);