Toon posts:

[sql] repeterende query op 1 tabel

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik heb de volgende tabel
PHP:
1
2
3
4
5
6
7
8
<?
+----+-----------+------+----+
| id | parent_id | naam |type|
+----+-----------+------+----+
|  1 |           | abc  | ab |
|  2 | 1         | def  | cd |
+----+-----------+------+----+
?>

Nu wil ik hier alleen de regels uithalen van het type 'cd'

das simpel met: select * from tabel where type='cd'

Resultaat is dan :
PHP:
1
2
3
4
5
6
7
<?
+----+-----------+------+----+
| id | parent_id | naam |type|
+----+-----------+------+----+
|  2 | 1         | def  | cd |
+----+-----------+------+----+
?>

Hoe krijg ik hier nu ook de naam van de parent erin?

Dus ik moet als resultaat krijgen:
PHP:
1
2
3
4
5
6
7
<?
+----+-----------+------+----+-------------+
| id | parent_id | naam |type| parent_naam |
+----+-----------+------+----+-------------+
|  2 | 1         | def  | cd | abc         |
+----+-----------+------+----+-------------+
?>

Wie helpt mij?

Patrick

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 06:45

HenkS

Da_king alias HenkS

niet :) of een andere database structuur maken

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

als het geen recursieve functie moet zijn (cq. slechts 1 level diep):
code:
1
2
3
select tabel.*, tabel2.naam as parent_naam
from tabel
left join tabel2 on tabel.parentid = tabel2.id

Klaar voor een nieuwe uitdaging.


  • [ti]
  • Registratie: Februari 2000
  • Niet online
code:
1
2
select t1.id, t1.parent_id, t1.naam as parent_naam, t1.type, t2.naam from tabel t1,tabel t2 where t1.type='cd'
and t1.parent_id = t2.id

lijkt te werken. maar volgens mij ist niet goed :P

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 06:45

HenkS

Da_king alias HenkS

oeps. misschien niet goed gelezen, heb je die parent_naam in een andere tabel staan?

Verwijderd

Beetje tricky maar ik denk dat je een referentie naar dezelfde tabel moet maken om vervolgens een inner join te doen naar dezelfde tabel.

select a.id, a.parent_id, a.naam, a.type, b.naam as parent_naam from tabel1 a inner join tabel1 b on b.id = a.parent_id where a.type='cd'

Verwijderd

Topicstarter
Nee hoor, alles staat in 1 tabel :)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op dinsdag 16 oktober 2001 13:45 schreef FourEyes het volgende:
Nee hoor, alles staat in 1 tabel :)
dus mijn methode :)

en dus nog een WHERE erbij maar dat mag de pret niet drukken.

Klaar voor een nieuwe uitdaging.


Verwijderd

Waarom wil je die eigenlijk erin krijgen als ik vragen mag

Verwijderd

Hmmzz, waar haal je die parentnaam abc vandaan?
die zie ik in je eerste tabel niet staan, of ben ik scheel?

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

code:
1
2
3
4
select *
from tabel
connect by prior parent_id=id
start with id=1

Moet je wel met Oracle gaan werken ;)

Who is John Galt?


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op dinsdag 16 oktober 2001 13:50 schreef Scimitar het volgende:
Hmmzz, waar haal je die parentnaam abc vandaan?
die zie ik in je eerste tabel niet staan, of ben ik scheel?
jij bent nogal scheel 8-)

Klaar voor een nieuwe uitdaging.


Verwijderd

Topicstarter
haha, hey bedankt jongens!
Pagina: 1