samle 2 sql kald i et output?

Tags:    databaser

jeg har prøvet at følge reglerne om normalisering af databaser og har derfor fået lidt flere tabeller end jeg ellers ville have brugt.

nu skal jeg så lave et kald hvor resultatet bliver gemt i et array af objecter
nu er problemmet så at det er 2 tabeller jeg skal have outputtet fra. er det nemmest at lave 2 kald og så samle dem bagefter eller et kald til begge på en gang, og hvordan gøres det?

sproget er php5 og er db mysql .

de 2 tabeller hedder.

backend_domain_rights , herefter kaldt bdr
og backend_domains , herefter kaldt bd

bd har følgende felter
id, domain_navn

bdr har disse felter
id, domain_id, bruger_id, rettigheder

jeg skal have følgende output

her i psudokode
hent fra bdr id,domain_id,rettigheder hvor bruger_id = 4
og fra bd domain_navn hvor id = (det domain_id for linjen oven over)

disse 2 ting skal gerne lande i det samme array af objecter

mvh Carsten A




5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
"SELECT a.id, a.domain_id, a.retigheder, b.domain_navn FROM bdr a, bd b WHERE a.bruger_id = 4 AND b.id = a.domain_id"

Kan det mon virke??



Select bd.id as bdID, bd.domain_navn as bdDomain_navn, bdr.id as bdrID, bdr.domain_id as bdrDomainID, bdr.bruger_id as bdrBrugerID, bdr.rettigheder as bdrRettigheder where bdr.brugerid=4 and bd.domain_navn = bdr.domainID

jeg kan desværre ikke lige teste den.. men det burde være noget i den stil..


men er db.domain_navn en int = ?

ellers skal det være noget lignende :

Select bd.id as bdID, bd.domain_navn as bdDomain_navn, bdr.id as bdrID, bdr.domain_id as bdrDomainID, bdr.bruger_id as bdrBrugerID, bdr.rettigheder as bdrRettigheder where bdr.brugerid=4 and bd.id = bdr.domainID

Med venlig hilsen
Jokke Jensen
www.jj-multimediedesign.dk

[Redigeret d. 01/02-05 11:15:13 af Jokke Jensen]



Jeg har selv løst problemmet med at samle tingene efter at kald er lavet, men jeg vil stadig gerne høre et bud på en løsning i msql istedet da jeg ikke tror min måde er den optimale.

$this->domains = $this->dbcon->getAll("select id AS id, domain_id AS domain_id, rettigheder AS rights from backend_domain_rights where bruger_id = '".$this->userid."'",array(),DB_FETCHMODE_OBJECT);

foreach($this->domains AS &$dommet)
{
$tempvar = $this->dbcon->getOne("select domain_navn AS navn from backend_domains where id = '". $dommet->domain_id . "'",array(),DB_FETCHMODE_OBJECT);
$dommet->dom_navn = $tempvar;
unset($tempvar);
}



hehe ok


Med venlig hilsen
/Jokke Jensen
www.jj-multimediedesign.dk



hov :) vi skrev jo samtidig.

du skal nok få UP alligevel :)

kan du måske sige mig hvorfor dette ikke virker?
siger der er en fejl i min sql syntax.

kan man ikke lave subquires i mysql?

select * from backend_bruger WHERE id in(select bruger_id from backend_domain_rights where id =1)


~Life is to short for windows~



t