потерял выполнение запроса к INFORMATION_SCHEMA.COLUMNS Таблица с объединением таблиц - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь вернуть DISTINCT B.INDEX_NAME вместе с B.COLUMN_NAME..поэтому я использовал группу

тогда для каждой возвращенной строки мне нужно A.DATA_TYPE

A.DATA_TYPE возвращено неверно

SELECT  A.DATA_TYPE, B.INDEX_NAME,  B.COLUMN_NAME
FROM  INFORMATION_SCHEMA.COLUMNS as A, INFORMATION_SCHEMA.STATISTICS as B
where B.TABLE_SCHEMA= "mySchema"
and   B.TABLE_NAME  = "myTable"
and   A.TABLE_SCHEMA = B.TABLE_SCHEMA
and   A.TABLE_NAME   = B.TABLE_NAME
GROUP BY B.COLUMN_NAME

1 Ответ

0 голосов
/ 07 мая 2018

Ваша проблема вызвана тем, что предложение GROUP BY выбрало DATA_TYPE случайным образом из множества возвращаемых значений, поскольку у вас нет условия для JOIN. Вам нужно ограничить количество значений на имя столбца до 1, добавив условие к вашему JOIN:

SELECT A.DATA_TYPE, B.INDEX_NAME, B.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS AS A
JOIN INFORMATION_SCHEMA.STATISTICS AS B
ON A.TABLE_SCHEMA = B.TABLE_SCHEMA AND
   A.TABLE_NAME = B.TABLE_NAME AND
   A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_SCHEMA= "mySchema" AND 
      A.TABLE_NAME  = "myTable"

В PHP (с MySQLI):

$sql = 'SELECT A.DATA_TYPE, B.INDEX_NAME, B.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS AS A
JOIN INFORMATION_SCHEMA.STATISTICS AS B
ON A.TABLE_SCHEMA = B.TABLE_SCHEMA AND
   A.TABLE_NAME = B.TABLE_NAME AND
   A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_SCHEMA= "mySchema" AND 
      A.TABLE_NAME  = "myTable"';
$result = mysqli_query($conn, $sql);
echo mysqli_num_rows($result);
while ($row = mysqli_fetch_assoc($result)) print_r($row);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...