0
votes

Comment rechercher de manière récursive la valeur de l'intérieur d'une jointure après avoir obtenu la valeur d'une autre table?

J'ai une table qui ressemble à ceci:

t1 p> xxx pré>

Je souhaite sélectionner le cod code> CID code> avec la plus grande valeur pour accéder à la raison. Je peux sélectionner le plus grand CID code> comme: p> xxx pré>

Cependant, lorsque j'essaie d'introduire la colonne code> code> comme: P>

select t2.* 
  from t2 
  left join (select to pick `reason` with greatest `cid`) 
    on t2.pid = t1.pid


2 commentaires

Notez que max (couper ('c' de la CID)) ne fait probablement pas ce que vous pensez. Il compare les nombres en tant que chaînes, donc si vous avez 'c2' et 'c10' Votre expression retournerait '2'


@a_horse_with_no_name Merci pour la clarification qui a aidé beaucoup.


3 Réponses :


0
votes

Vous pouvez utiliser la clause : xxx


1 commentaires

Cela ne fonctionne pas pour moi, car la solution doit être évolutive. Je ne peux pas avoir de statique comme ayant = 2. Je veux vérifier le CID maximum pour chaque PID. Cela a-t-il du sens? Merci en avance.



0
votes

La requête serait

SELECT reason,
       trim('C' from cid)
FROM t1
ORDER BY trim('C' from cid) DESC
LIMIT 1;


0 commentaires

1
votes

Il ressemble à raison code> n'est pas utilisé du tout dans votre requête finale, mais peut-être que c'est juste une faute de frappe?

Utiliser la limite 1 pour obtenir la dernière ligne: P>

select t2.*, reason
from t2 
left join (select pid, reason FROM T1 order by cid DESC limit 1) as sub on sub.pid = t2.pid;


0 commentaires