Специфична SQL заявка

kulov

Registered
Здравейте, въпроса ми е има ли начин изобщо това да стане:

Така, предполагам, че всички знаете какво прави заявката
SHOW TABLES IN `dbname`

За тези, които не знаят тя извежда всички таблици от дадена база данни, но за да изведеж самите имена на таблиците трябва да пуснеш цикъл.. то е ясно.

Въпроса ми е има ли начин това нещо да се вкара в една заявка със SELECT, тей като това нещо го ползвам за да укажа, от кои таблици да извежда записи..

А за момента това става само ако пусна цикъл и втора заявка.. искам това да става в една заявка..
 
Малко ми е по-тежка заявката и ми връща SQL syntax error.. ще погледнеш ли..

PHP:
$url_array[]="LCASE(`url`) LIKE '%".mb_strtolower($term_next, "UTF-8")."%'";
$qSelectResultsUrl=mysql_query("SELECT `id`, `main_url2`, `main_title2`, `main_picture2`, `title`, `url`, `text`, `date` FROM (SHOW TABLES IN `searchenginedatabase`) AS `tableNames` WHERE 
".implode(" OR ", $url_array)."
AND `active` = '1' AND `title` != ''
GROUP BY `title` ORDER BY `hits` DESC LIMIT 0,2") or die(mysql_error());
 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SHOW TABLES IN `searchenginedatabase`) AS `tableNames` WHERE LCASE(`url`) ' at line 1
 
Явно с SHOW TABLES няма да стане. Ето това ще работи:

[sql]SELECT `TABLE_NAME` AS TableName FROM (SELECT * FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'dbname' ) AS TableNames[/sql]
 
е добре но така не мога да изведа записите от тези таблици.. дава ми
Unknown column 'id' in 'field list'

PHP:
$qSelectResultsUrl=mysql_query("SELECT `id`, `main_url2`, `main_title2`, `main_picture2`, `title`, `url`, `text`, `date`, `TABLE_NAME` AS TableName FROM (SELECT * FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'searchenginedatabase' ) AS TableNames WHERE 
".implode(" OR ", $url_array)."
AND `active` = '1' AND `title` != ''
GROUP BY `title` ORDER BY `hits` DESC LIMIT 0,2") or die(mysql_error());
 
kulov каза:
е добре но така не мога да изведа записите от тези таблици.. дава ми
Unknown column 'id' in 'field list'

PHP:
$qSelectResultsUrl=mysql_query("SELECT `id`, `main_url2`, `main_title2`, `main_picture2`, `title`, `url`, `text`, `date`, `TABLE_NAME` AS TableName FROM (SELECT * FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'searchenginedatabase' ) AS TableNames WHERE 
".implode(" OR ", $url_array)."
AND `active` = '1' AND `title` != ''
GROUP BY `title` ORDER BY `hits` DESC LIMIT 0,2") or die(mysql_error());

Чакай малко сега. Как ще извеждаш записи от различни таблици с една заявка. Те трябва да са ти еднакви тия таблици. А какъв е смисъла от еднакви таблици? Това се прави с още едно поле.
 
Таблиците са с различни имена и садържат различна информация, но просто самите редове са еднакви..

Идеята е, че това, което е в момента не работи тоест с една заявка извеждам таблиците във базата данни използвам цикъл и ги извеждам в този цикъл, след това със следваща заявка извеждам записите от тази таблица.. въпроса е, че с два цикъла нещата се прецакват.. идеята беше извеждането на тези таблици и след това извеждането на записите да става с една заявка.. така ще избегна единият цикъл..
 
kulov каза:
Таблиците са с различни имена и садържат различна информация, но просто самите редове са еднакви..

Идеята е, че това, което е в момента не работи тоест с една заявка извеждам таблиците във базата данни използвам цикъл и ги извеждам в този цикъл, след това със следваща заявка извеждам записите от тази таблица.. въпроса е, че с два цикъла нещата се прецакват.. идеята беше извеждането на тези таблици и след това извеждането на записите да става с една заявка.. така ще избегна единият цикъл..

Те са с различни имена, но една и съща структура. Иначе няма как да ги селектираш с една и съща заявка. Още щом се наложи да правиш такива изпълнения със заявката трябва да си премислиш структурата на БД.
 
Добре, имам нов въпрос, това е кода:

PHP:
$qSelectSites=mysql_query("SHOW TABLES IN `searchenginedatabase`") or die(mysql_error());
for ($ixa=0; $ixa<=mysql_num_rows($qSelectSites); $ixa++) {
	$qSelectSitesRow=mysql_fetch_assoc($qSelectSites);
	$table=$qSelectSitesRow[Tables_in_searchenginedatabase];
	while(list(, $term_next) = each($term_ex)) {	
		[b]echo $table;[/b]

Някой да има идея, защо ако изведа $table след цикъла while, се извежда само първият резултат, а ако изведа $table преди цикъла while си извежда всички резултати..

Ето примера: като го извеждам преди цикъла while извежда това:

ris6_com_dirs
sportal_bg_dirs
vali_bg_dirs


А ако го изведа след цикъла while извежда само

ris6_com_dirs
 

Back
Горе