Existe-t-il un moyen de spécifier le champ de requête parent à partir d'une sous-requête dans mySQL?Comment spécifier le champ de requête parent à partir d'une sous-requête dans mySQL?
Par exemple:
J'ai écrit un programme de type babillard de base en PHP.
Dans la base de données, chaque message contient: id (PK) et parent_id (l'ID du parent post). Si le poste est lui-même un parent, alors son parent_id est mis à 0.
J'essaye d'écrire une requête mySQL qui trouvera tous les messages de parent et le nombre d'enfants que le parent a.
$query = "SELECT id, (
SELECT COUNT(1)
FROM post_table
WHERE parent_id = id
) as num_children
FROM post_table
WHERE parent_id = 0";
La partie la plus délicate est que le premier id ne sait pas qu'il doit se référer à la deuxième id qui est en dehors de la sous-requête. Je sais que je peux faire SELECT id AS id_tmp et puis se référer à l'intérieur de la sous-requête, mais si je veux aussi retourner l'id et garder "id" comme nom de colonne, alors je devrais faire une requête qui renvoie moi 2 colonnes avec les mêmes données (ce qui me semble salissante)
$query = "SELECT id, id AS id_tmp,
(SELECT COUNT(1)
FROM post_table
WHERE parent_id = id_tmp) as num_children
FROM post_table
WHERE parent_id = 0";
la façon désordonnée fonctionne très bien, mais je me sens une occasion d'apprendre quelque chose ici, donc je pensais que je poste la question.
Et si j'ai pris l'alias pour p1.id? –
Qu'est-ce que cela signifie? "pris alias pour"? – Don
Si j'ai pris un alias comme: "SELECT p1.id comme MYID," alors quelle sera la requête? –