[PHP/MSSQL] Tabelnaam zoeken

Pagina: 1
Acties:
  • 142 views sinds 30-01-2008
  • Reageer

Onderwerpen


Verwijderd

Topicstarter
Ik probeer te vergeefs de tabel op te vragen waar een veld uit komt (MSSQL)

bij een query als

code:
1
select * from items


is dit nog wel te extracten uit de query, maar als de query iets wordt als:

code:
1
select * from recipe inner join items where itemreq=items;


Tsja, dan kan het uit alletwee komen.

in php heb je nog mssql_field_name om de naam te krijgen, alleen daar komt alleen de veldnaam naar voren. mssql_field_table ofzo ontbreekt helaas.
noch de return value van: "tabel.veld" ofzo

Is er TOCH een truuk om te achterhalen uit welk van de 2 (of meer) tabellen dit veld komt?

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
de syntax van SQL SELECT is niet dusdanig complex dat je niet met een reguliere expressie af zou kunnen...alhoewel

http://www.contrib.andrew...dow/sql/sql2bnf.aug92.txt

suuces ermee B)

Verwijderd

Topicstarter
Ja, maar zelfs ALS ik al uit mijn Query string gehaald krijg welke tabellen ik allemaal gebruik,
hoe weet ik dan uit welke tabel van de lijst tabellen die ik in mijn query gebruik dat specifieke veld komt!? Dat staat niet in mijn Query namelijk.

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
Je kan toch gewoon met de functie http://nl2.php.net/manual/nl/function.mysql-list-fields.php de velden ophalen en kijken in welke het staat? Alleen moet je rekening houden met aliassen.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Of je maakt een updateble view, dan kan je altijd alles aanpassen zonder dat het uitmaakt uit welke tabel iets komt. Bovendien hoef je dan alleen in de view te klooien om de kolommen te bepalen en wordt overal * gebruiken in je code ook iets minder ranzig.
Dit is natuurlijk een oplossing op een ander niveau, dus kan zijn dat je dit niet zoekt. :+

{signature}


Verwijderd

Je bouwt zelf je database en je query, dus ik zou niet weten waarom je dit uit het resultaat van een query zou willen halen. Het enige wat ik me erbij kan bedenken is dat je tabellen joined met een kolom met gelijke naam, maar dan kan je in je query een tabelnaam gebruiken om de specifieke kolom te identificeren, bijv:
SQL:
1
2
SELECT P.Naam, L.Naam
FROM Product P LEFT JOIN Leverancier L ON P.LeverencierID = L.LeverancierID

Als dit niet is wat je bedoelt moet je nog maar eens goed uitleggen wat je wil en waarom, want ik denk dat je iets wil dat je eigenlijk niet zou moeten willen.

Verwijderd

Topicstarter
Nou,

wat duidelijker dan.

Ik heb een Scriptje gemaakt wat een tabel uitleest naar aanleiding van een query die de gebruiker mee geeft. Daar ik dit script wil gebruiken om uit een reeds bestaande database (die ERG stom in elkaar zit vaak) gegevens te lezen heb ik niks te zeggen over de layout van de database.

MAAR er zijn ook velden van het type: PICTURE. Nou wil ik dat die keurig als plaatje in mijn tabelletje met gegevens komen te staan.
Echter zal ik die picture data naar een image parser moeten krijgen. via ?imgdata=<lange string> werkt het natuurlijk nooit, want daarvoor is de size van je Querystring (URI) veel te kort.

Kortom, ik zal van een op design time nog onbekend veld de specs moeten gaan doorgeven aan een ander script die het plaatje vervolgens extract.
Dat script moet wel weten uit welke tabel het plaatje gehaald moet worden.

Daarom moet ik de tabel weten. Dat ik de juiste tabel door kan geven aan dat image script.

(mysql_field_table bestaat wel, nou mssql_field_table nog)

[ Voor 8% gewijzigd door Verwijderd op 25-08-2005 16:13 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Als dit de enige aanpassing is aan een historisch programma kan je het overwegen om door te gaan met wat je nu wil, maar als er nog een hele rits feature-requests en bugs openstaan is het misschien toch handiger om de boel grondig aan te pakken.
Of bouw voorlopig dus verder op een view, dan kan je later altijd nog opschonen en de hele applicatie laten werken door je view correct te houden. Een view kan je ook aan een kortere query helpen.

[ Voor 4% gewijzigd door Voutloos op 25-08-2005 16:19 ]

{signature}


Verwijderd

Topicstarter
Toen DACHT ik, van pak de oplossing van DJLUC,
alleen ook zijn oplossing gaat niet.

Nogmaals ter info: Het gaat over een MS SQL database. MSSQL ondersteuning is veel slechter in PHP dan MYSQL ondersteuning (qua mogelijkheden dan ;-) )

[ Voor 80% gewijzigd door Verwijderd op 25-08-2005 16:29 ]


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Dit klinkt nogal omslachtig en slecht opgezette applicatie/database.

Maar goed je kan via de sysviews achterhalen welke velden een tabel bevat.
Maar goed dit soort manieren om een applicatie op te zetten riekt naar ellende, slechte performance en security flaws.

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op donderdag 25 augustus 2005 @ 16:23:
Nogmaals ter info: Het gaat over een MS SQL database. MSSQL ondersteuning is veel slechter in PHP dan MYSQL ondersteuning (qua mogelijkheden dan ;-) )
Redelijk onzin, in MSSQL moet je gewoon queries gebruiken op de schema-views. Dat de methode anders is betekent niet dat de ondersteuning per definitie slechter is :)

Sinds wanneer kent MSSQL overigens fields van type PICTURE.... heb ik ergens iets gemist? 8)7

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 19:48

pistole

Frutter

ik zou ook gewoon geen * selecteren ;-)
Waarom niet een normale en correcte select velden lijst en dan eventueel aliassen gebruiken als je meerdere kolommen van dezelfde naam hebt?

Ik frut, dus ik epibreer


Acties:
  • 0 Henk 'm!

Verwijderd

Het probleem is dat underdog_ de gebruiker een SQL statement wil laten aanleveren, en ook gebonden is aan een database die hij niet zelf heeft gemaakt. Eerlijk gezegd zou ik nooit zo'n app willen maken, maar goed ... ik denk dat raptorix de oplossing al heeft gegeven, met de terechte warschuwingen erbij.
Pagina: 1