0

MySQL と XML データの両方をマージする方法を探しているので、タイムスタンプで並べ替えることができます。理想的な状況は次のようなものです。

SELECT timestamp, title
FROM news
UNION ALL
SELECT timestamp, title 
FROM xmlsource('local.xml')
ORDER BY timestamp DESC

このようなことは可能ですか?または、両方のデータ ソースをマージして並べ替える他の方法はありますか? 正しい方向への指針をありがとう。

4

1 に答える 1

1

これがどれほど効率的かはわかりませんが、自分でテストできます。ここにあります:

<?php
$sql = 'SELECT timestamp, title FROM news ORDER BY timestamp DESC';
$run = mysql_query( $sql, $link );

$result = array();
if( $run && mysql_num_rows( $run ) ) {
    while( ( $fetch = mysql_fetch_assoc( $run ) ) !== false ) {
        $time = $fetch[ 'timestamp' ];
        $title = htmlspecialchars( $fetch[ 'title' ], ENT_COMPAT, 'UTF-8' );

        $result[ $time ][] = $title;
        // this is an array, in case multiple title have same timestamp.
    }
}

$xml = simplexml_load_file( 'local.xml' );
$xpath = $xml->xpath( '//story' );

foreach( $xpath as $story ) {
    $time = $story->time;
    $title = (string) $story->headline;

    $result[ $time ][] = $title; // append this to the results array.
}

// sort by timestamp ascending
arsort( $result );
?>

それが役に立てば幸い。

于 2012-05-02T14:00:50.640 に答える