2 つの行を自動的に結合したい場合は、おそらく分割せずに 1 つの行を作成するだけでよいことを意味します。
file | date | face
cyclist.jpg | 04-05-2012 | true
それ以外の場合は、別々の行を保持する必要がある場合は、1 つのクエリですべての行を選択するだけです。
$res = mysql_query("select * from tags where file='cyclist.jpg'");
そして、それらを繰り返して「マージされた」レコードを実現します。
$res = mysql_query("select * from tags_table where file='cyclist.jpg'");
$mergedRow = array();
while ($row = mysql_fetch_assoc($res)) {
foreach ($row as $rowKey => $rowValue) {
if (!array_key_exists($rowKey, $mergedRow)) {
$mergedRow[$rowKey] = $rowValue;
}
}
}
編集:
ここで約束したように、2 つの行を 1 つのクエリで 1 つに結合するサンプルを示します$mergedRow
が、PHP でそれらをマージする方法をお勧めします :)
CREATE TABLE `files_table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`tag_type` enum('PARENT','CHILD') NOT NULL DEFAULT 'PARENT',
`date` date DEFAULT NULL,
`file` varchar(255) NOT NULL DEFAULT '',
`face` smallint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
次に、PARENT-CHILDRENセットを次のものと「ペア」にすることができます:
SELECT t1.file, t1.date, t2.face
FROM files_table AS t1 JOIN files_table AS t2 ON (t1.file = t2.file)
WHERE t1.tag_type = 'PARENT' AND t2.tag_type = 'CHILD'
GROUP BY file