Код для «любой» переменной? - PullRequest
2 голосов
/ 20 июня 2009

Я хочу объединить следующий код. Хотя я не уверен, как ссылаться на SELECT * FROM для любой таблицы, заканчивающейся в листинге.

        $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'");

Заранее спасибо: D

Ответы [ 3 ]

6 голосов
/ 20 июня 2009

Насколько мне известно, нет способа ссылаться на таблицы с подстановочными знаками.

Возможно, вы захотите изменить схему так, чтобы у вас была одна таблица listing со столбцом, чтобы указать, какой это тип списка (saksfifthavenue, предположите, ...).

Вы можете просто запросить эту единственную таблицу.

Это также нормализует вашу схему немного лучше.

0 голосов
/ 20 июня 2009

Вы можете выполнить запрос по шаблону с помощью команды SHOW TABLES . В вашем случае вы бы сделали:

SHOW TABLES LIKE '%listing'

Это работает в командной строке или в PHP:

<code> $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 "
";
0 голосов
/ 20 июня 2009

Насколько я знаю, вы не можете указывать подстановочные знаки в именах таблиц. Таким образом, ваш код, вероятно, настолько мал, насколько это возможно.

Если вам не нужен доступ в режиме реального времени, вы можете периодически записывать результат в другую таблицу и ссылаться только на эту таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...