select u.phone, u.email , t.to_address (error from this) from user_accounts u where u.id in (select w.user_id from wallets w where w.id in ( select t.wallet_id from withdraws t where t.to_address in ('1F6o1fZZ7', 'pJDtRRnyhDN'))) I want to get the column to_address from subquery. How can I get it in postgresql?I try assign 'AS' for subquery but it didn't work
3 Réponses :
Utilisez Joindre avec toute la table, vous n'avez besoin de sous-requête
select u.phone, u.email , ww.to_address from user_accounts u left join wallets w on u.id=w.user_id left jon withdraws ww on w.id=ww.wallet_id where ww.to_address in ('1F6o1fZZ7', 'pJDtRRnyhDN')
Un joint renvoie une table de résultats construite à partir de données provenant de plusieurs tables. Vous pouvez également récupérer la même table de résultats à l'aide d'une sous-requête. Une sous-requête est simplement une instruction SELECT dans une autre instruction SELECT.
select u.phone, u.email , t.to_address ( from user_accounts u INNER JOIN wallets w ON u.id= w.user_id INNER JOIN withdraws t ON t.wallet_id =w.id where t.to_address in ('1F6o1fZZ7', 'pJDtRRnyhDN')
Vous ne pouvez pas réaliser ce que vous essayez d'utiliser sous-requête. Lorsque vous souhaitez des enregistrements de différentes tables et qu'ils ont une colonne unique en commun qui les relie, vous devez le faire à l'aide d'un joindre code> code>.
parfois fort> (pas tous les cas) Vérifiez le lien de comparaison:
rejoindre interne Versus Versus faisant un lieu où dans la clause P> sur la requête: strong> p> dans code> peut entraîner des problèmes de performances, vous devez donc envisager de savoir plus sur différents types de
joints code> ( https://www.w3schools.com/sql/sql_join.asp ) p>
Vous avez une référence à une question de performance SQL Server, mais cette question est étiquetée Postgres.
De plus: non pas dans la condition ne peut être réécrite comme une jointure. Ce sont deux choses différentes