Ga naar inhoud

[MYSQL/PHP] Juiste querie gezocht


Aanbevolen berichten

Ik ben vandaag is heel druk bezig geweest met MySQL. Geprobeerd elke normaalvorm te halen en alles zo flexibel mogelijk op te zetten, zodat je bijna niks hoeft te wijzigen als je na een jaar je dingetje afhebt :P [edit] Uiteindelijk doel: "Je selecteert een naam in een tabel. Het id dat bij die naam hoort wil ik vergelijken met een id in een andere tabel. Hoe maak je de juiste querie hiervoor?" [/edit] Ik zal wel even beginnen met de uitleg over m'n MySQL tabelletjes, zodat we daarna op de queries (schrijf je dat zo?) kunnen komen. Ik heb momenteel 4 tabellen en daar wil ik even wat resultaten mee boeken voordat ik wat ga uitbreiden hier en daar. De eerste tabel is 'content', hierin staan een aantal onbelangrijke dingen zoals: 'tekst', 'datum', 'auteur', 'titel' en een belangrijke: cat_id De tweede tabel is 'cat'. Deze bestaat uit de eerder genoemde 'cat_id' en daarnaast: 'hcat_id', 'scat_id' en 'beschrijving'. De derde tabel is 'hoofdcat'. Hierin zitten 'hcat_id', 'naam' en 'beschrijving' De vierde is 'subcat' met daarin: 'scat_id' en 'naam'. Volgen we het nog? 'cat_id' is een unieke combinatie van 'scat_id' en 'hcat_id'. Daarom heeft deze een bescrhijving erbij. 'scat_id' heeft dat niet nodig. Hier kan het zo zijn dat 'scat_id' leeg is. Op de is 'naam' in 'hoofdcat' gelijk aan de eerste parameter van de hyperlink: http://dummylink.ex/parameen/ De kolom 'naam' in 'subcat' is gelijk aan de de tweede parameter van de hyperlink http://dummylink.ex/parameen/paramtwee/ Die parameters heb ik via een scriptje al naar een variabele omgezet zodat ze te gebruiken zijn in de querie. Nu is het globaal gezien de bedoeling dat als de hyperlink bijvoorbeeld iets is van /iets/ietsanders/ dat alle subcatagorieen van 'iets' worden opgezocht. Graag zou ik weten hoe ik dat moet dan. Ik kan zelf de benodigede querie niet echt vinden :roll: Alvast heel erg bedankt. -termin8or
Link naar reactie
De post is niet geheel duidelijk denk ik, daarom alvast iets wat momenteel wel is gelukt:[code:1:f621773a7c]<!-- relaties (section) --> <?php $sql = 'SELECT * FROM hoofdcat ORDER BY hcat_id ASC'; $result = mysql_query($sql); while ($row = mysql_fetch_array($result)){ $naam = $row[1]; $beschrijving = $row[2]; print '<link rel="section" href="/'.$naam.'/" title="'.$beschrijving.'" />'."\n"; } mysql_close(); ?>[/code:1:f621773a7c]De bedoeling is nu dat ditzelfde erkomt van rel="subsection", alleen ligt die informatie een stuk verspreider waardoor het opstellen van de juiste queries ineens een stuk gecompliceerder werd. De beschrijving van subsection zit namelijk in de tabel 'cat', terwijl de enige informatie die ik heb, aan de hand van de url is de waarde van de kolom 'naam' in 'hoofdcat'. Daarnaast moet ik uit de tabel 'subcat' ook nog de 'naam' hebben voor de href waarde. Al met al niet al te makkelijk dus. -termin8or
Link naar reactie
Als je een database dump kunt maken (met bijv PhpMyAdmin) dan is het makkelijker om een oplossing te geven. Ik hoef geen waarden te hebben - al is dat wel makkelijker bij het testen - maar met name de code om de tabellen te genereren. Als ik het zie is het voor mij namelijk wat makkelijker. - Bas
Link naar reactie
[code:1:d23222c7f6]# # Tabel structuur voor tabel `cat` # CREATE TABLE cat ( cat_id tinyint(4) NOT NULL auto_increment, hcat_id tinyint(4) default NULL, scat_id tinyint(4) default NULL, beschrijving varchar(255) default NULL, PRIMARY KEY (cat_id) ) TYPE=MyISAM; # -------------------------------------------------------- # # Tabel structuur voor tabel `content` # CREATE TABLE content ( titel varchar(255) NOT NULL default '', auteur varchar(255) NOT NULL default '', datum timestamp(14) NOT NULL, tekst text NOT NULL, cat_id smallint(4) NOT NULL default '0' ) TYPE=MyISAM; # -------------------------------------------------------- # # Tabel structuur voor tabel `hoofdcat` # CREATE TABLE hoofdcat ( hcat_id tinyint(4) NOT NULL auto_increment, naam varchar(255) NOT NULL default '', beschrijving varchar(255) NOT NULL default '', PRIMARY KEY (hcat_id) ) TYPE=MyISAM; # -------------------------------------------------------- # # Tabel structuur voor tabel `subcat` # CREATE TABLE subcat ( scat_id tinyint(4) NOT NULL auto_increment, naam varchar(255) NOT NULL default '', PRIMARY KEY (scat_id) ) TYPE=MyISAM;[/code:1:d23222c7f6]Sommige dingen zijn: "Geen probleem" :) -termin8or
Link naar reactie
Volgens mijn tests moet het volgende werken om alle subcats van "contact" te krijgen: :roll:[code:1:253902021a]SELECT subcat.naam, cat.beschrijving FROM subcat, cat, hoofdcat WHERE cat.scat_id = subcat.scat_id AND cat.hcat_id = hoofdcat.hcat_id AND hoofdcat.naam = "contact";[/code:1:253902021a] - Bas
Link naar reactie
Bedankt hij werkt perfect! Gebruikte code om rel="subsection" goed weer te geven:[code:1:52a614c7c7] $sql = "SELECT subcat.naam, cat.beschrijving FROM subcat, cat, hoofdcat WHERE cat.scat_id = subcat.scat_id AND cat.hcat_id = hoofdcat.hcat_id AND hoofdcat.naam = \"".$url_array[0]."\";"; $result = mysql_query($sql); while ($row = mysql_fetch_array($result)){ $naam = $row["naam"]; $beschrijving = $row["beschrijving"]; print '<link rel="subsection" href="/'.$naam.'/" title="'.$beschrijving.'" />'."\n"; }[/code:1:52a614c7c7]-termin8or
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...