ユーザーがデータベースにアップロードした写真の記録があります。アップロードした写真の 1 つをカバー写真として指定できます。
データベースにクエリを実行して、ユーザー名ごとに 1 枚の写真を返したいと思います。カバー写真がある場合は、それを返します。そうでない場合は、通常の写真を引きます。カバー写真を指定する列は、長さが 1 の tinyint です。列は、"0" (カバー写真ではない) または "1" (カバー写真) のいずれかです。
ユーザー名のリストのすべての写真を返すには、次のようにします
$usernames = array('bob', 'ted', 'jim');
$usernames = implode( "', '", $usernames );
$query = "SELECT * FROM Photos WHERE username IN('$usernames')";
しかし、私はそれを次のものと組み合わせる必要があります.1つのユーザー名がない場合はカバー写真があり、通常の写真がありません.
$query = "SELECT * FROM Photos WHERE username = 'bob' ORDER BY cover DESC LIMIT 1";
GROUP BY 関数を使用する必要があると思いますが、その設定方法がわかりません。助言がありますか?
列は、id(bigint)、name(varchar(255))、cover(tinyint)、username(varchar(30)) です。