1

我正在使用 PHP/MySQL 在这个站点中构建这个易货类型的函数,并且我正在尝试创建一个响应以下字段的查询:所有者的用户名、标题、提供者的用户名、提供者的项目

基本上我在这里有三个表,其中包含以下字段:

用户

user_id, username, email 

items_available

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

offer_open

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

我该怎么做呢?我已经看到了一些对多对多 SQL 查询的引用,但它们似乎并不特别适合我正在寻找的内容(例如,offerers_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表将在查询中出现两次,因此它们需要像这样别名:

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

听起来您需要用户表的别名。

就像是?

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 回答