MYSQL belső select eredményének felhasználása külső select oszlopnevéhez

Sziasztok!

Olyan problémám lenne, hogy egy adatbázis x táblájának oszlopaival kellene műveletet végeznem. Az oszlopok száma ebből a szempontból ismeretlen, az information schema adja... Külföldi oldalakon nem jártam sikerrel, mindenki mindenféle tárolt eljárásos megoldással próbál előhozakodni. egy halvány példa mire is gondolok:

A tábla és oszlopneveket megkapom a
SELECT TABLE_NAME, COLUMN_NAME FROM information_schema.`COLUMNS` C WHERE TABLE_SCHEMA=DATABASE();
lekérdezésből. azt szeretném, ha ezen eredmények mindegyikén végigmenne az sql és egy másik query-t lefuttatna, mint mondjuk a
SELECT MAX(COLUMN_NAME) from TABLE_NAME;
ahol COLUMN_NAME és TABLE_NAME az első eredményhalmaz adott sorából jön...

már próbáltam kismillió változatot...

Valami ötlet, hátha volt hasonlóra szüksége valakinek...

Köszönöm!

Hozzászólások

A MAX() függvényt nem teljesen értem miért jó neked, különösen szöveg jellegű eredményekkel.

--
Apache Solr Druplahoz és Wordpresshez: http://solr.vpspro.hu

Köszi, ezzel sajnos az a baj, hogy ha a tábla neve mondjuk users, és áll a tábla uid, name és psw mezőkből, hogy egyszerű legyen a példa,és tartalmaz mondjuk 2 adatsort:
uid name psw
1 Kis Pista 12345
2 Nagy Jocó 67890
akkor a Te queryd eredménye az lesz, hogy:

LENGTH(TABLE_NAME) LENGTH(COLUMN_NAME)
5 3
5 4
5 3
mert az oszlop nevét veszi. Ezért gondoltam a MAX() fv-t példának, hogy az adott oszlop értékeit nézi. Tehát mondjuk a COLUMN_NAME MAX(COLUMN_NAME) azt hozza erre, hogy:
uid 2
name (itt sajnos nem értelmezhető, de egy más fv mondjuk ok)
psw 67890

Akkor rosszul értettem. A schema csak a tábla tulajdonságait, pl. mezőnevét adja vissza. Itt ráadásul minden táblára vonatkozva.

Itt jön az, hogy én tökmáshogy csinálnám. Jó eséllyel be lehet valahogy oltani, hogy direktben az SQL adja vissza amit akarsz, de jobban jársz a hagyományos úttal imho.


SHOW TABLES FROM $database;
-- Na ide nyugodtan jöhet a foreach. :)
Kiválasztod az oszlopneveket minden táblából, akár info schemaból.
SELECT $oszlopneveklistaja FROM table;
-- Örül.

Jelen esetben teljesen mind1 erőforrás szempontból, hogy a tárolt eljárással az SQL szervert pörgeted nagyjából hasonló algoritmus szerint, mint a PHP-t. Akkor jöhet jól a tárolt eljárás, ha az SQL szerver és a PHP szerver között extra nagy a válaszidő vagy extrém módon spórolni kell a forgalommal, lekérdezésekkel.

Itt az idő elővenni a kedvenc shelledet, és 2 perc alatt összekonkatenálni a lekérdezett táblanevekből a lényegi SQL-t.

Neeeeeeeeeeeeeeeee... :) Mármint a foreach-et. Aki a MySQL-ből kinyert gigemega eredményhalmazra elsőre ráeresztette a foreach-et azzal szerintem néhányan innen elbeszélgetnénk. :) Van subselect, SQL-es rendező opciók, egy halom függvény, view-k stb. Igazán extra eset kell, hogy a PHP-ból kelljen komoly formában variálni.

Egyetértek... nem tízezres nagyságrendű eredmény várható, hanem néhány tíz vagy max néhány száz... és nem feltétlenül szó szerinti foreach-et kell érteni, vannak jobb megoldások is. arra gondoltam, hogy ha lehet, akkor elkerülni, hogy minden tábla/oszlop lekérdezéséhez be kelljen szaladni sql-hez. Az egyik cél, hogy többek között kinyerjek egy
TABLE_NAME, COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH halmazt az information_schema-ból, és minden oszlop mellé oda legyen írva a lekérdezéskori pillanatnyi maximális érték/hossz...