2

次のMYSQLクエリを1つ書くにはどうすればよいですか

私は3つのテーブルを持っています

user_idログインしているのが25であることを知っています

Users(id,first_name,last_name)

userproduducts(user_id,product_id)

Product(id,title,description,price)

userproducts多対多の解決済みテーブルです

ユーザーの を取得しfirst_name、userproducts テーブルの product テーブルのすべてを取得するクエリを作成するにはどうすればよいですか??last_nameid=25user_id = 25

ありがとうございました

4

3 に答える 3

6

シンプルで簡単な方法でJOIN、必要なものが得られます。

SELECT 
  u.first_name,
  u.last_name,
  p.*
FROM users              As u
INNER JOIN userproducts AS up ON up.user_id     = u.id
INNER JOIN product      AS  p ON up.product_id  = p.id
WHERE u.id = 25;
于 2013-03-28T10:24:31.120 に答える
3

これは 2 つの結合で行われます。製品を持っていないユーザーを取得する場合は、LEFT JOINS にする必要があります。

SELECT u.first_name, u.last_name, p.*
FROM users u
LEFT JOIN userproducts up ON u.id = up.user_id
LEFT JOIN product on up.product_id = p.id
WHERE p.id = 25

商品がない場合、商品情報は空欄となります。null製品が必要ない場合は、INNER JOINを使用してください。これは、以前の回答にあるJOINとしても記述されています。

SELECT u.first_name, u.last_name, p.*
FROM users u
JOIN userproducts up ON u.id = up.user_id
JOIN product on up.product_id = p.id
WHERE p.id = 25
于 2013-03-28T10:34:20.280 に答える
2

これを試して

SELECT 
 ut.first_name,
 ut.last_name,
 pt.*
FROM users              As ut
INNER JOIN userproducts AS upro ON upro.user_id     = ut.id
INNER JOIN product      AS  pt ON upro.product_id = pt.id
WHERE ut.id = 25;
于 2013-03-28T10:27:49.483 に答える