为每个用户调用第一条记录

时间:2014-06-30 15:28:19

标签: php mysql

我有这两个数据库:

用户数据库

_______________________
| ID  |   username    |
-----------------------
|  1  |    JOHN       |
|  2  |    JACKSYS    |
|  3  |    GATSBY     |
|  4  |    GERARD     |
-----------------------

为每个用户销售数据库的产品。

_______________________
| ID  |   product     |
-----------------------
|  1  |    JACKET     |
|  1  |    SOCKS      |
|  1  |    TROUSERS   |
|  2  |    SHIRT      |
-----------------------

我的查询应该如何,如果我只想从每个用户中选择第一个产品,考虑到选择此产品后,它将在以后删除,而另一个产品将作为每个用户的第一个位置。感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我不建议像这样设置数据库。您应该让每个项目都具有唯一的ID以及用户ID。然后你可以像这样调用一个mysql_query

mysql_query("SELECT * FROM products WHERE id='$userid' AND productid='1'); //Where 1 would be the first item associated with the user

这也可以让您更轻松地删除项目。但是,如果您不想改变数据库,可以这样做。 只需循环遍历数据库并在找到具有匹配id的第一个项目时将其中断,然后使用相关数据。

$userid = ;//Set the user id however you would like

$sqlcon = mysql_query("SELECT * FROM products WHERE id='$userid'"));
$num_rows = mysql_num_rows($sqlcon);
for ($i=0; $i<$num_rows; $i++) {
  $row = mysql_fetch_assoc($sqlcon);
  if ($row['id'] == $userid) {
    $productname = $row['username']; // I would recommend changing this column name to product not username
    break;
  }
}

if (!empty($productname)) {
  echo $productname;
}

答案 1 :(得分:0)

要从每个用户获取第一个产品,您可以使用以下查询:

SELECT * FROM products JOIN users ON users.id = products.id GROUP BY users.id

此查询的结果:

______________________________________
| ID  |   product     |   username   |
--------------------------------------
|  1  |    JACKET     |    JOHN      |
|  2  |    SHIRT      |    JACKSYS   |
--------------------------------------

我将products表中的用户名列重命名为product。