UNION ALL bir dizi çıkmıyor?

4 Cevap php

Ben birkaç sorguları birliğidir bir sql deyimi var.

"SELECT a, b, c, 'd' as type FROM x WHERE id = $id UNION ALL
 SELECT a, b, c, 'e' as type FROM y WHERE id = $id UNION ALL
 SELECT a, b, c, 'f' as type FROM z WHERE id = $id ORDER BY a DESC LIMIT 10";

Ben sonuçları yineleme ve her satır için 'bir' değer almak için deneyin ancak çalışması için yapamazsınız.

for($i =  0 ;  $i <  mysql_num_rows($result) ; $i++){
    $row = mysql_fetch_assoc($result);
    echo($row['a']);
}

I know it is a silly question but I got stuck. Any ideas please? Thanks!

4 Cevap

Çözüldü. Ben bu sorguyu değiştirdi ve o amele:

"SELECT a as A, b as B, c as C, 'd' as type FROM x WHERE id = $id UNION ALL
 SELECT a as A, b as B, c as C, 'e' as type FROM y WHERE id = $id UNION ALL
 SELECT a as A, b as B, c as C, 'f' as type FROM z WHERE id = $id ORDER BY a DESC LIMIT 10";

Kopyalamak mı / kodunuzu yapıştırın ya da yeniden yazın?

$ Row = mysql_fetch_array ($ g uery);

Düşününce gel, sen bir sonuç kolu değil, bir sorgu üzerinde mysql_fetch_assoc çağrı olmalıdır.

Döngüsü için bu perfveyamans sveyaunlarına neden olur kötü bir uygulama, bir bir işlevi çağırmak hiçbir zaman gerek.

fveya($i =  0 ;  $i <  mysql_num_rows($result) ; $i++){
    $row = mysql_fetch_assoc($result);
    echo($row['a']);
}

Ayrıca döngü içinde veyatak diziyi almak istiyveyasunuz? Bu da her zaman yerine getirecektir?

İyi Uygulama

$countRows = mysql_num_rows($result);

fveya($i=0; $i<$countRows; $i++){
    $row = mysql_fetch_assoc($result);
    echo "Row: ".$row['a']."<br />";
}

veya

$row = mysql_fetch_assoc($result);

fveyaeach($row as $key=>$value) {
   echo "Key: ".$key." Value: ".$value."<br />";
}

veya

while($row = mysql_fetch_assoc($result))
{
   echo "Row: ".$row['a'] . "<br />";
}

Ben ("Does UNION ALL bir dizi dönmek?") Fiili soruyu cevaplamak için gidiyorum.

No, union [all] return arrays, bu resultsets birleştirmek için kullanılır değildir. Bu union all şeklinde kullanılırsa, elde edilen resultset tüm yinelenen satırlar korunur ki, kesinleştirir.

İşte all o orada bulunuyor.