[MYSQL] Select met optionele colommen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • TygeR
  • Registratie: Oktober 2000
  • Laatst online: 06-02 16:23
Hallo Tweakers,

Ik wil graag een query uitvoeren op een tabel waarbij een aantal colommen uit de select list in de ene tabel wel en in de andere niet voorkomen. misschien kan ik dit het beste uitleggen in pseudo SQL:

SELECT ID,naam,data[,permission,owner,group] FROM Page;

Ik weet voor de query niet of permission, owner en group voorkomen in de tabel (of de colommen aanwezich zijn). Als ze bestaan wil ik ze graag selecteren, als ze niet bestaan dan wil ik alleen ID, naam en data (waarvan ik wel zeker weet dat ze in de tabel staan).

Ik wil dit doen omdat sommige tabellen een beveilliging hebben op basis van die variabelen en andere niet, als permission, owner en group aanwezich zijn wil ik de beveiliging afdwingen, zijn ze niet aanwezig kan de vrager van de data de data gelijk krijgen. Het is dus de bedoeling om het pseudo gedeelte [,permission,owner,group] aan elke query naar de database toe te voegen.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 19:56

MueR

Admin Tweakers Discord

is niet lief

Dat gaat je vziw niet lukken. Kolomnamen die jij specificeert moeten bestaan, anders gaat het dood (en terecht).

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • xilent_xage
  • Registratie: Februari 2005
  • Laatst online: 15-09 11:35
Ik zou dit niet ander kunnen oplossen dan het toevoegen van de optionele kolommen aan iedere query en indien error dan verschillende combinaties van kolommen gaan proberen. Als je een database-abstractielaag hebt is dat de aangewezen plek. Maar het gevolg is wel dat je in je voorbeeld per oorspronkelijke query 1-7 queries moet doen. En bij JOINS nog veel meer. Of je zoekt eerst uit welke kolommen in de opgevraagde tabel voorkomen (4 queries per oorspronkelijke query in je voorbeeld) en past daar je queries op aan. Welke strategie de beste is hangt af van hoe vaak de optionele kolommen aanwezig zijn. Hoe dan ook zwaar klote dus. Ik zou, als je de keuze hebt, de functionaliteit of structuur van je db aanpassen, want je applicatie wordt er niet sneller van...

[ Voor 0% gewijzigd door xilent_xage op 16-02-2009 17:41 . Reden: typo's ]


Acties:
  • 0 Henk 'm!

  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 22:08
Als ik het goed begrijp voer je de query dus elke keer uit als de gebruiker die om die waardes in je query vraagt, en niet als een algemene database-gebruiker? De beveiliging richting eindgebruiker op basis van die terugkomende waardes lijkt me meer iets voor applicatielaag i.p.v. in de opbouw van je databaseconnectie, juist om problemen met opbouw van je queries te voorkomen. En mocht je bedoelen dat de waardes in je query niet altijd gevuld zullen zijn afhankelijk van je WHERE-clause zou je eens kunnen kijken naar OUTER JOIN.