【问题标题】:How do a query where, joining a table, the field can get a value from fields A or B with Laravel如何使用 Laravel 查询字段可以从字段 A 或 B 中获取值的位置,加入表
【发布时间】:2015-05-25 06:11:56
【问题描述】:

我有两张桌子

玩家(ID - 名称)

比赛(TournamentID - Player1 - Player2 - 结果)

我正在尝试加入一个名为“Tennis Tournament”的主桌,其中显示每场比赛,例如(PlayerName 1 vs PlayerName 2)

我的查询只使用了一个 ID1_G(Player1),但我不知道也可以获取 ID2_G(Player2)。

下一个语法是我正在尝试的,但它不起作用...

$tournament = $this->games->where('ID_T_G', $id)
            ->join('rounds', 'rounds.ID_R', '=', 'games_wta.ID_R_G')
            ->join('players_wta', 'players_wta.ID_P', '=', 'games_wta.ID1_G', 'or', 'games_wta.ID2_G')->get();

图像总是比文字更好,所以我会告诉你(如果你以前不理解我的话)我想做什么。

请给点建议!

【问题讨论】:

  • 拥有表的 CREATE 语句会很棒。
  • 我没有,我手动创建了表格。
  • 在同一张表上的相应键上加入两次。
  • 我已经这样尝试过了,它显示这个错误:SQLSTATE[42000]: 语法错误或访问冲突:1066 Not unique table/alias: 'players_wta' (SQL: select * from games_wta inner在rounds上加入roundsrounds.ID_R=games_wta.ID_R_G内连接players_wtaplayers_wta.ID_P=games_wta.players_wta内连接@9867654333@@98676 .ID_P = games_wta.ID2_G 其中ID_T_G = 1)
  • 正如@wanted 所提到的,您能否发布表格架构?您可以导出数据库以使用架构生成 SQL 文件,然后使用架构更新您的问题。

标签: php mysql laravel join where


【解决方案1】:

我终于可以使用下面的原始 SQL 语句了:

SELECT
    P1.NAME_P AS Player1,
    P2.NAME_P AS Player2
    FROM games_wta As G
    INNER JOIN players_wta AS P1
        ON G.ID1_G = P1.ID_P
    INNER JOIN players_wta AS P2
        ON G.ID2_G = P2.ID_P;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 2014-12-03
    相关资源
    最近更新 更多