首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取多个表MySQL,join

问获取多个表MySQL,join
EN

Stack Overflow用户
提问于 2015-03-17 17:13:47
回答 1查看 73关注 0票数 0

我想选择一些我存储在MySQL DB中的信息。例如,我有两个表gameTable和playerTable。现在我想要得到gameTable,并得到这些球员的名字和等级。我该怎么做??

​

​

这就是我到目前为止得到的,它是有效的,但我不确定这是最有效的方法。是否需要为每个引用行创建联接??

代码语言:javascript
复制
<?php

include ('connect.php');


 $result = mysqli_query($connect,  
        "SELECT gameTable.id, 
            playerTable1.name AS name1, playerTable1.level AS level1, 
            playerTable2.name AS name2, playerTable2.level AS level2, 
            playerTable3.name AS name3, playerTable3.level AS level3, 
            playerTable4.name AS name4, playerTable4.level AS level4
         FROM gameTable
            JOIN playerTable AS playerTable1 ON gameTable.P1_id = playerTable1.id
            JOIN playerTable AS playerTable2 ON gameTable.P2_id = playerTable2.id
            JOIN playerTable AS playerTable3 ON gameTable.P3_id = playerTable3.id
            JOIN playerTable AS playerTable4 ON gameTable.P4_id = playerTable4.id
        ");

    while ($record = mysqli_fetch_array($result))
    { 
        echo $record['id']  . " - " 
            . $record['name1'] . " - " . $record['level1'] . " - " 
            . $record['name2'] . " - " . $record['level2'] . " - " 
            . $record['name3'] . " - " . $record['level3'] . " - " 
            . $record['name4'] . " - " . $record['level4'] . "<br>";
    }

?>

第二个问题,我的数据库设置为MyISAM。将其更改为InnoDB会有帮助吗?或者,这只适用于数据库中的更新、删除等操作,而不适用于获取数据?

EN

回答 1

Stack Overflow用户

发布于 2015-03-17 17:56:29

我会像这样使用字符串(引用注释问题,而不是原始问题)。这只为内存中的每个位置保留了一个字符串空间。这节省了为中间字符串赋值的开销,而且应该可以节省内存,甚至可以加快执行时间,因为字符串连接有时是一个非常慢的过程。

代码语言:javascript
复制
$myarr = array();
 while ($record = mysqli_fetch_array($result))
  { 
    $myarr[] = $record['id'] ; 
    $myarr[] = " - " ;
    $myarr[] = $record['name1'] ;
    $myarr[] = " - " ;
    $myarr[] = $record['level1'];
    $myarr[] = " - ";
    $myarr[] = $record['name2'];
    $myarr[] = " - ";
    $myarr[] = $record['level2'];
    $myarr[] = " - ";
    $myarr[] = $record['name3'];
    $myarr[] = " - ";
    $myarr[] = $record['level3'];
    $myarr[] = " - ";
    $myarr[] = $record['name4'];
    $myarr[] = " - ";
    $myarr[] = $record['level4'];
    $myarr[] = "<br>";
 }
 echo implode('',$myarr);
 unset($myarr);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29095198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档