В моей базе данных есть 4 пользовательских таблицы - wp_api_teams
, wp_api_matches
, wp_api_competitions
и wp_api_federations
.Они являются частью моей базы данных Wordpress, вот как они выглядят (я использую внешние ключи и все такое):
![phpmyadmin schema](https://i.stack.imgur.com/xJMoz.png)
Я пытаюсьвывести все команды, которые являются частью федерации.Когда я запускаю это в phpmyadmin, это работает:
SELECT
wp_api_teams.team_id,
wp_api_teams.title,
wp_api_competitions.comp_id,
wp_api_competitions.title,
wp_api_federations.federation_id,
wp_api_federations.title
FROM
wp_api_teams
JOIN wp_api_matches
ON wp_api_teams.team_id = wp_api_matches.hometeam_id OR wp_api_teams.team_id = wp_api_matches.awayteam_id
JOIN wp_api_competitions
ON wp_api_matches.comp_id = wp_api_competitions.comp_id
JOIN wp_api_federations
ON wp_api_competitions.federation_id = wp_api_federations.federation_id
WHERE wp_api_federations.federation_id = 1
GROUP BY (wp_api_teams.team_id);
Я получаю точные результаты, которые я ищу.
-----------------------------------------------------------------------------------
| team_id | title | comp_id | title | federation_id | title |
1 Arsenal 1 Premier League 1 England
2 Chelsea 1 Premier League 1 England
3 Liverpool 1 Premier League 1 England
4 Manchester United 1 Premier League 1 England
5 Manchester City 1 Premier League 1 England
Это код, который я использую в Wordpress:
<code>global $wpdb;
$sql = "
SELECT
wp_api_teams.team_id,
wp_api_teams.title,
wp_api_competitions.comp_id,
wp_api_competitions.title,
wp_api_federations.federation_id,
wp_api_federations.title
FROM
wp_api_teams
JOIN wp_api_matches
ON wp_api_teams.team_id = wp_api_matches.hometeam_id OR wp_api_teams.team_id = wp_api_matches.awayteam_id
JOIN wp_api_competitions
ON wp_api_matches.comp_id = wp_api_competitions.comp_id
JOIN wp_api_federations
ON wp_api_competitions.federation_id = wp_api_federations.federation_id
WHERE wp_api_federations.federation_id = 1
GROUP BY wp_api_teams.team_id
";
$test = $wpdb->get_results($sql);
echo('<pre>');
print_r($test);
echo('
');
и полученный результат пропускает два столбца таблицы:
Array
(
[0] => stdClass Object
(
[team_id] => 1
[title] => England
[comp_id] => 1
[federation_id] => 1
)
[1] => stdClass Object
(
[team_id] => 2
[title] => England
[comp_id] => 1
[federation_id] => 1
)
.... и т. Д.
Как вы можете видетьстолбцы wp_api_teams.title
и wp_api_competitions.title
отсутствуют в результате.
Итак, мои вопросы: почему это происходит, почему эти столбцы опущены, и есть ли что-то, что я могу сделать, чтобы это исправить, потому чтоЯ абсолютно нуждаюсь в них в моем возвращенном результате.Как один и тот же запрос может привести к другому результату в WP и PHPmyadmin.
Это известная ошибка или что-то не так с моим кодом?
Я запускаю 10.2.14-MariaDB
на localhost
и все настольные движки InnoDB
.