'Herhangi bir' değişken için kod?

3 Cevap php

Ben aşağıdaki kodu birleştirmek istiyorum. Ben listeleme biten herhangi bir tablo SELECT * başvuru nasıl emin değilim rağmen.

    	$this->displaylistings=mysql_query("SELECT * FROM nordstromlisting WHERE ShopperID = '$this->ShopperID'
	UNION ALL SELECT * FROM saksfifthavenuelisting WHERE ShopperID = '$this->ShopperID'
	UNION ALL SELECT * FROM guesslisting WHERE ShopperID = '$this->ShopperID'
	UNION ALL SELECT * FROM gnclisting WHERE ShopperID = '$this->ShopperID'
	UNION ALL SELECT * FROM urbanoutfitterslisting WHERE ShopperID = '$tnis->ShopperID'
	UNION ALL SELECT * FROM bananarepubliclisting WHERE ShopperID = '$this->ShopperID'
	UNION ALL SELECT * FROM americaneaglelisting WHERE ShopperID = '$this->ShopperID'
	UNION ALL SELECT * FROM neimanmarcuslisting WHERE ShopperID = '$this->ShopperID'
	UNION ALL SELECT * FROM footlockerlisting WHERE ShopperID = '$this->ShopperID'");

Şimdiden teşekkürler: D

3 Cevap

Benim bilgi için joker ile tablolara başvurmak için bir yol yoktur.

Eğer o (saksfifthavenue, tahmin, ...) olduğu listeleme ne tür belirtmek için bir sütun ile bir tek listing tablo var ki şemasını değiştirmeden düşünebilirsiniz.

Daha sonra sadece o tek tabloya karşı sorgu olabilir.

Bu olur da normalize, şema biraz daha iyi.

Sen bildiğim kadarıyla, tablo isimleri joker belirtebilirsiniz olamaz. Bunu elde etmek olacak şekilde size kod muhtemelen küçük.

Eğer gerçek zamanlı erişim ihtiyacınız yoksa, periyodik başka bir tabloya sonuç yazmak ve yalnızca o tablo başvuruda bulunabilir.

Sen SHOW TABLES komutu ile joker tarafından sorgulayabilirsiniz. Sizin durumunuzda yapardın:

SHOW TABLES LIKE '%listing'

Bu komut satırında veya PHP çalışır:

 $find_tables_query = "SHOW TABLES LIKE '%listing'";
$result = mysql_query($find_tables_query)
    or die ("Cannot make query. " . mysql_error());

$queries = array();
while ($row = mysql_fetch_row($result)) {
    $queries[] = 'SELECT * FROM '
        . $row[0]
        . ' WHERE ShopperID=\'$this->ShopperID\'';
}
$combined_query = implode("\nUNION ALL\n",$queries);

// for debugging, print query:
print "<pre>";
print $combined_query;
print "</pre>";