Pdo mysql derslerimize devam ediyoruz.Bu derste tek bir sorguda birden fazla tablodan veri çekmemize yarayan
union ve
union all komutlarını anlatacağım.
1-Union
Öncelikle sql yapımıza bakalım.
select sütun_ismi from tablo_ismi union select sütun_ismi from tablo_ismi union ...
Unionda dikkat etmemiz gerekenler sütun sayıları tüm sorgularda eşit olmalı.Unionun,union alldan farkı aynı verileri sadece 1 kez çekiyor.
2-Union all
Sql yapısı union ile nerdeyse aynı.Sadece unionun yanına all eklioruz.
select sütun_ismi from tablo_ismi union all select sütun_ismi from tablo_ismi union all ...
Unionda olduğu gibi bunda da sütun sayıları eşit olmalıdır.Union all ne kadar veri varsa hepsini çeker.
Genel örnek :
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>UstaDerslik</title>
<script type="text/javascript" src="jquery-1.9.1.js"></script>
</head>
<body>
<?php
try{//hata varmı diye kontrol mekanizması.
$baglanti=new PDO("mysql:host=localhost;dbname=pdo","root","");//pdo adlı veritabanımıza bağlantı yaptık
}catch (PDOException $h) {
$hata=$h->getMessage();
echo "<b>HATA VAR :</b> ".$hata;//bağlantı hatası olursa.hata var yaz dedik.
}
$union=$baglanti->query("select uye from mesaj union select uye2 from mesaj2 union select uye3 from mesaj3 ");//union 3 ile tabloyu birleştirip üyeleri çektik
$unionall=$baglanti->query("select uye from mesaj union all select uye2 from mesaj2 union all select uye3 from mesaj3");//union all ile 3 tabloyu birleştirip üyeleri çektik
if($union and $unionall){//eğer veri çekildiyse
foreach($union as $al){//çekilen verileri tek tek al değişkenine aktar
echo $al["uye"]."<br />";//üye ismini yaz
}
echo "<br />";
foreach($unionall as $al){//union all verilerini yazıyoruz.
echo $al["uye"]."<br />";
}
}else{
echo "veri çekilemedi";
}
?>
</body>
</html>
Yukarıdaki örnekte 3 tablodan üyeleri çektik.Normalde 3 tabloda da
cArleone var,ama unionda sadece 1 tane cArleone çekerken,union allda 3 cArleoneyi de çekti.Temel kullanımı bu şekilde.