1

押し付けがましくないことを願っています。SQLYog やその他のクエリ作成用アプリを使用してみましたが、皆さんの専門知識に勝るものはありません。だからここに私の質問があります: このクエリの結果を、最も閲覧された順 (vistas.cuenta) と DESC という方法で並べることは可能ですか?記事が表示された時間 (cuenta(count) という名前の列で)。現在は機能していますが、Union の順に表示されます。vistas テーブルには、記事の ID と、各テーブルのテーブル名を保持する列が格納されています。

2 つのテーブルのシナリオでは、そのようになります。

SELECT ciencia.id,ciencia.titulo,vistas.cuenta
FROM vistas, ciencia
WHERE vistas.id_pag = ciencia.id
AND vistas.seccion = ciencia.tabla
ORDER BY vistas.cuenta

それ(上のクエリ)は完璧に機能しますが、下のクエリでは機能しません。

include("connection.php");
$data = "
SELECT ciencia.id,ciencia.titulo,vistas.cuenta FROM vistas, ciencia WHERE vistas.id_pag = ciencia.id AND vistas.seccion = ciencia.tabla
UNION  SELECT cultura.id,cultura.titulo,vistas.cuenta FROM vistas, cultura WHERE vistas.id_pag = cultura.id AND vistas.seccion = cultura.tabla
UNION  SELECT deportes.id,deportes.titulo,vistas.cuenta FROM vistas, deportes WHERE vistas.id_pag = deportes.id AND vistas.seccion = deportes.tabla
UNION  SELECT economia.id,economia.titulo,vistas.cuenta FROM vistas, economia WHERE vistas.id_pag = economia.id AND vistas.seccion = economia.tabla
UNION  SELECT internacionales.id,internacionales.titulo,vistas.cuenta FROM vistas, internacionales WHERE vistas.id_pag = internacionales.id AND vistas.seccion = internacionales.tabla
UNION  SELECT migracion.id,migracion.titulo,vistas.cuenta FROM vistas, migracion WHERE vistas.id_pag = migracion.id AND vistas.seccion = migracion.tabla
UNION  SELECT nacionales.id,nacionales.titulo,vistas.cuenta FROM vistas, nacionales WHERE vistas.id_pag = nacionales.id AND vistas.seccion = nacionales.tabla
UNION  SELECT regionales.id,regionales.titulo,vistas.cuenta FROM vistas, regionales WHERE vistas.id_pag = regionales.id AND vistas.seccion = regionales.tabla
UNION  SELECT politica.id,politica.titulo,vistas.cuenta FROM vistas, politica WHERE vistas.id_pag = politica.id AND vistas.seccion = politica.tabla
";
$extractor = $mon -> query($data);
while($fila = mysqli_fetch_array( $extractor ))
{ print $fila['id'].' seccion '.$fila['titulo'].' - '.$fila['cuenta'].'<br>'; }
4

2 に答える 2

3

クエリを別のクエリにラップしてSELECT、結果を並べ替えるだけです。

SELECT
*
FROM
(SELECT ciencia.id,ciencia.titulo,vistas.cuenta FROM vistas, ciencia WHERE vistas.id_pag = ciencia.id AND vistas.seccion = ciencia.tabla
UNION  SELECT cultura.id,cultura.titulo,vistas.cuenta FROM vistas, cultura WHERE vistas.id_pag = cultura.id AND vistas.seccion = cultura.tabla
UNION  SELECT deportes.id,deportes.titulo,vistas.cuenta FROM vistas, deportes WHERE vistas.id_pag = deportes.id AND vistas.seccion = deportes.tabla
UNION  SELECT economia.id,economia.titulo,vistas.cuenta FROM vistas, economia WHERE vistas.id_pag = economia.id AND vistas.seccion = economia.tabla
UNION  SELECT internacionales.id,internacionales.titulo,vistas.cuenta FROM vistas, internacionales WHERE vistas.id_pag = internacionales.id AND vistas.seccion = internacionales.tabla
UNION  SELECT migracion.id,migracion.titulo,vistas.cuenta FROM vistas, migracion WHERE vistas.id_pag = migracion.id AND vistas.seccion = migracion.tabla
UNION  SELECT nacionales.id,nacionales.titulo,vistas.cuenta FROM vistas, nacionales WHERE vistas.id_pag = nacionales.id AND vistas.seccion = nacionales.tabla
UNION  SELECT regionales.id,regionales.titulo,vistas.cuenta FROM vistas, regionales WHERE vistas.id_pag = regionales.id AND vistas.seccion = regionales.tabla
UNION  SELECT politica.id,politica.titulo,vistas.cuenta FROM vistas, politica WHERE vistas.id_pag = politica.id AND vistas.seccion = politica.tabla
) a
ORDER BY
cuenta DESC
于 2012-08-09T05:41:25.980 に答える
-3

ORDER BY使用時は使用できませんUNION

于 2012-08-09T05:27:52.713 に答える