1

私はPHP/MySQLを使用してこのサイトでこの物々交換タイプの関数を構築しており、所有者のユーザー名、タイトル、提供者のユーザー名、提供者のアイテムのフィールドで応答するクエリを作成しようとしています。

基本的に、ここには次のフィールドを持つ3つのテーブルがあります。

ユーザー

user_id, username, email 

items_available

item_number, owner_id (foreign key that links to user_id), title

オファー_オープン

trade_id, offerers_id (fk of user_id), offerers_item(fk with item_number), receivers_id (fk from user_id)

どうすればよいですか?多対多のSQLクエリへの参照をいくつか見ましたが、それらは私が探しているものに特に適合していないようです(たとえば、offers_idとowner_idsはUsersテーブルの異なるusers_idを参照していますが、どうすればよいですか? SQLクエリで区別できるようにしますか?)

4

3 に答える 3

4

私が正しく理解していれば、これはあなたが探しているものです:

SELECT owner.username, oferrers.username, ia.title
FROM offers_open o
  INNER JOIN users AS offerers
    ON o.offerers_id = offerers.user_id
  INNER JOIN items_available AS ia
    ON o.offerers_item= ia.item_number
  INNER JOIN users AS owner
    ON ia.owner_id = owner.user_id

usersテーブルにタイトルが表示されないので、タイトルを含めませんでした。

于 2012-10-03T14:28:43.440 に答える
0

正確にどの出力が必要かはわかりませんが、usersテーブルはクエリに2回表示されるため、次のようにエイリアス化する必要があります。

SELECT offerer.username AS offerer_username, title, receiver.username AS receiver_username
FROM users AS owner
JOIN items_available ON owner_id = owner.user_id
JOIN offers_open ON offerers_item = item_number
JOIN users AS receiver ON receivers_id

繰り返しますが、それがあなたが望むものであるかどうかはわかりませんが、あなたがアイデアを得ることを願っています。

于 2012-10-03T14:29:12.133 に答える
0

usersテーブルのエイリアスが必要なようです。

何かのようなもの?

select 
  u.*, ia.*, oo.*,u2.*
from
  users as u,
  items_available as ia,
  offers_open as oo,
  users as u2
where
  u.user_id = ia_user_id and
  oo.user_id = u2.user_id and
  oo.item_id = ia.item_id
于 2012-10-03T14:29:34.480 に答える