#php #mysql #sql #wordpress
Вопрос:
Может ли кто-нибудь, пожалуйста, помочь мне получить количество заполненных столбцов MySQL?
Например: Структура Моей Таблицы:
ID | Имя | Имя |
---|---|---|
1 | азбука | нулевой |
2 | XYZ |
В приведенной выше таблице у меня есть две строки, и обе строки содержат одно пустое и одно пустое значение, мне просто нужно получить количество каждой строки, в которой нет NULL
EMPTY
значения ИЛИ для определенного ID
значения .
ожидаемый результат:
ГДЕ ID=1, результат будет:
Count = 2 (идентификатор, имя)
ГДЕ ID=2, результат будет:
Count = 2 (ID, LName)
**Я хочу использовать это в WordPress
Комментарии:
1. Можете ли вы объяснить ожидаемый результат для
ID = 2
? Разве счет не должен быть равен 1?2. Проверьте каждый столбец (не пустой и не ПУСТОЙ) отдельно и подведите итоги тестирования.
3. @TimBiegeleisen Таким
ID = 2
образом , количество будет равно двум, потому что оно также будет включать подсчет этого конкретного идентификатора.4. @Akina В настоящее время у меня есть результаты таблицы базы данных в виде массива, и в настоящее время я просматриваю этот конкретный массив, используя PHP foreach, и сравниваю значение Не Null и Не пустое, и увеличиваю количество, но хорошо ли это для оптимизации?
Ответ №1:
Итак, после поисков в течение часа или двух.
Я использую это в качестве своего решения, но я не уверен, что это хорошая переоценка оптимизации. Вот что я использую:
function ranking_mechanism( $currentUserID ){ global $wpdb; $rank = 0; $results = $wpdb-gt;get_row( $wpdb-gt;prepare('SELECT * FROM TABLE WHERE ID=%d', $currentUserID) ); $finalArr = (array) $results; // Convert $results as Array(to perform iteration), it(WordPress DB Query) typically return Object by Default foreach ( $finalArr as $key =gt; $Table ) { if( $finalArr[$key] == '' || $finalArr[$key] == 'NULL' ){ // Nothing to do }else{ $rank = $rank 1; // Increase Rank If Found Value } return $rank; }
Ответ №2:
SELECT ID, (ID IS NOT NULL) /* assuming that ID is numeric and cannot be empty string */ (FName lt;gt; '' AND FName IS NOT NULL) (LName lt;gt; '' AND LName IS NOT NULL) AS `Count` FROM source_table -- WHERE ID = ???