0

MySQLと統合して2種類のアイテム(アイテムは曲)を含むiPhoneアプリに.plistファイルを送信するPHPスクリプトがあります。

  1. アプリにすでに表示されているはずのアイテム
  2. 将来的に表示されるはずのアイテム

2つのクエリと完全に機能するPHPを使用して、過去と未来のアイテム(それぞれの可変量が必要)を希望の順序で取得します。単一のクエリソリューションを見つけられなかった、または思い付かなかったことが主な理由ですが、皆さんがこれをどのように解決するのか興味があります。必要な順序で行を取得するための単一のクエリはありますか?他の順序で行を取得するための単一のクエリはありますか?

とにかく、これが私が望む結果行を取得し、結果の.plistに表示したい順序でそれらを配置するPHPとSQLです。私はUNIXタイムスタンプを使用しているのは、それが簡単だからです。そのため、非難されないことを願っています。特に私の特定の質問に影響を与えるとは思いません。

$readbehind = mysql_query(sprintf('SELECT SongID, RemoteSongLocation, SongTitle, UNIX_TIMESTAMP( ScheduledActivationDateTime ) AS ActivateAfterUnixTime FROM  `thesongs` WHERE UNIX_TIMESTAMP( ScheduledActivationDateTime ) < UNIX_TIMESTAMP( ) ORDER BY ScheduledActivationDateTime DESC LIMIT 0, %d', MAX_READBEHIND_SONGS));
$readahead = mysql_query(sprintf('SELECT SongID, RemoteSongLocation, SongTitle, UNIX_TIMESTAMP( ScheduledActivationDateTime ) AS ActivateAfterUnixTime FROM  `thesongs` WHERE UNIX_TIMESTAMP( ScheduledActivationDateTime ) > UNIX_TIMESTAMP( ) ORDER BY ScheduledActivationDateTime ASC LIMIT 0, %d', MAX_READAHEAD_SONGS));

$songsForClient = array();
while ($row = mysql_fetch_assoc($readbehind)) {
    $songsForClient[] = $row;
}
while ($row = mysql_fetch_assoc($readahead)) {
    $songsForClient[] = $row;
}
4

1 に答える 1

1

ユニオンを使用して両方のステートメントを接続できます

http://dev.mysql.com/doc/refman/5.5/en/union.html

または、すべてを選択して、現在使用しているものを除外しますWHERE SongID != ' . $id

SongIDの1つが複数回使用されているかどうかを確認するか、別のSQL列を使用する必要がある場合があります。

于 2012-04-19T15:52:14.187 に答える