3つのテーブルから関連データをフェッチしています。
テーブルにuseracc
は、details
列に注文IDを持つユーザーアカウントトランザクションがあります。これは、details
列内の「gift%」を検索するクエリが実行される基本的なテーブルです。
"SELECT * FROM `useracc` WHERE `details` LIKE 'gift%' ORDER BY `id` DESC"
ここでdetails
、「ギフト注文ID:245」として指定された列のこれらの結果から注文IDを取得します。この245が必要で、別のクエリを実行して2番目のテーブルで245を検索しますtransaction
。列が245であるsenderemail
テーブルの列をフェッチしたい。これが[email protected]を返すと仮定するtransaction
orderid
今3番目のテーブルにあります。つまりusers
、そのメールに関連するユーザー名を見つけたいと思います。クエリを実行して、abc @ abc.comusername
であるテーブルの列をフェッチしたいと思います。users
useremail
このユーザー名は、最初のクエリの結果を含むテーブル形式のすべての行に表示されます
サブクエリを使用してこれを行うにはどうすればよいですか。助けてください
SELECT u.username, ua.*
FROM useracc AS ua
JOIN transaction AS t ON ua.details = CONCAT('gift order id:', t.id)
JOIN users AS u ON u.useremail = t.senderemail
WHERE ua.details LIKE 'gift order id:%'
ORDER BY ua.id DESC
このWHERE
句はON
条件と重複しているため、厳密には必要ありません。ただし、クエリが高速化される可能性があります。クエリの有無にかかわらず試して、どちらが速いかを確認してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加