6

たとえば、queue_watchが0を示している場合、実際のmysql出力に「いいえ」と表示させます。それ以外の場合は「はい」と表示します。スキームを変更することはオプションではありません。

SELECT user.user_name, queue.queue_name, queue_access.queue_access,
    queue_access.queue_watch
FROM queue_access
INNER JOIN user ON user.user_id = queue_access.user_id
INNER JOIN queue ON queue.queue_id = queue_access.queue_id
WHERE queue_access <> '' OR queue_watch = 1
ORDER BY user_name;

SQLは必要なものに対して機能しますが、PHPではなくSQLを使用して出力を変更できるかどうかを知りたいです。また、1行のすべてのqueue_nameを各user_nameにグループ化して、153行を返す必要がないようにすることは可能ですか。

ありがとう

4

2 に答える 2

9

頭上ではありません。クエリで行う方がいいと思います。

これを試して -

SELECT user.user_name, queue.queue_name, queue_access.queue_access,
       IF(queue_access.queue_watch = 0, 'No', 'Yes')
FROM queue_access
INNER JOIN user ON user.user_id = queue_access.user_id
INNER JOIN queue ON queue.queue_id = queue_access.queue_id
WHERE queue_access <> '' OR queue_watch = 1
ORDER BY user_name;
于 2012-05-22T20:12:42.447 に答える
5

標準CASE式を使用できます。式を書くには、わずかに異なる2つの方法がありますCASE

単純な大文字小文字の表現:

SELECT
    CASE queue_access.queue_watch
        WHEN 0 THEN 'No'
        ELSE 'Yes'
    END AS your_alias,
    ...

検索されたケース式:

SELECT
    CASE WHEN queue_access.queue_watch = 0 THEN 'No' ELSE 'Yes' END AS your_alias,
    ...

IFまたは、MySQL固有の構成を使用できます。

SELECT
    IF(queue_access.queue_watch, 'Yes', 'No') AS your_alias,
    ...

値が0または1以外の場合、どうなるかを検討することをお勧めします。

于 2012-05-22T20:12:37.003 に答える