内连接导致不同的数组

时间:2011-12-14 18:04:07

标签: php mysql inner-join

我正在使用内部联接语句从表Venues和Users中检索数据。但是,我希望有一个看起来像这样的数组

$resultsFromVenueTableArray = array(

    $relevantVenueKey => $relevantVenueValue,
    $resultsFromUserTable => $arrayOfValuesFromUserTable

);

而不是只有一个满是所有检索到的数据的数组看起来像这样:

$resultsFromQuery = array(

    $venueKey,
    $userKey,
    $venueKey...

)

我怎么能实现这个目标?

这是我的代码;

$query = $this->db->query("SELECT * FROM Venues INNER JOIN Users ON Users.id = $userID", array($userID));

$venues = array();

foreach ($query->result() as $row) {

    $row->username = $username;
    $venues[] = $row;

}

1 个答案:

答案 0 :(得分:1)

从问题中确切地知道您想要做什么,但是您可以从这两个表中提取特定列,如下所示:

SELECT Venues.*, Users.username FROM Venues INNER JOIN Users ON...

允许您从“用户”中仅提取“用户名”列。

连接总是会给你留下一系列行,如果你需要别的东西,你可能不得不在PHP中使用它来操纵数据,除非我误解了你的问题。

这样的东西会让用户获得所有场地,用户名作为数组键:

$venuesByUser = array();
foreach ($query->result() as $row) {
    $venuesByUser[$row->username][] = $row;
}