sql >> データベース >  >> RDS >> Mysql

複雑なMySQLクエリ

    次のようなことができます:

    SELECT 
        t1.post_id, 
        t1.meta_value AS name, 
        t2.meta_value AS season, 
        t3.meta_value AS episode
    FROM
        (
        SELECT *
        FROM the_table
        WHERE meta_key = 'name'
        ) t1
    INNER JOIN
        (
        SELECT *
        FROM the_table
        WHERE meta_key = 'season'
        ) t2 ON t1.post_id = t2.post_id
    INNER JOIN
        (
        SELECT *
        FROM the_table
        WHERE meta_key = 'episode'
        ) t3 ON t1.post_id = t3.post_id
    

    これにより、結果が得られます:

    | post_id | name       | season | episode |
    -------------------------------------------
    |    1    | Smallville | 1      | 1       |
    |    2    | Smallville | 1      | 2       |
    

    この形式では、どの操作でもはるかに簡単です。

    追加する必要があるのは:

    WHERE name = 'Smallville'
    ORDER BY season, episode
    


    1. TOP n WITH TIESに相当するPostgreSQL:LIMIT with ties?

    2. mysql+phpはパスを持つ葉の子を取得します

    3. 警告:mysql_num_rows()は、パラメーター1がリソースであると想定しています。ブール値は/home/folder/public_html/folder/folder/login.phpの18行目にあります。

    4. PHP / mysqli:mysqli_stmt_bind_param()を使用してIPアドレスを挿入します