Toon posts:

[SQL] combineer 'SET field' waardes *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

tabel inschrijvers:
id_inschrijver
naam
in_categorie: waarbij in_categorie SET field met mogelijke categorienummers (corresponderend met id_categorie)

tabel categorie:
id_categorie
naam
zoekmogelijheden: waarbij zoekmogelijkheden SET field met mogelijke zoeknummers
(corresponderend met id's uit een derde tabel)

Nu wil ik per inschrijver een lijst krijgen van alle waardes het veld zoekmogelijkheden van alle categorieen (geen dubbele entry's)

voorbeeld:

record tabel inschrijver: id=1, voornaam=niek, in_categorie=2,6,7
record tabel categorie: id_categorie=2, naam=cat2, zoekmogelijkheden: 1,2,4,6,10
record tabel categorie: id_categorie=6, naam=cat6, zoekmogelijkheden: 1,2,3,6,11
record tabel categorie: id_categorie=7, naam=cat7, zoekmogelijkheden: 1,3,5,6,11,12

de lijst die ik nodig heb is alle waardes van zoekmogelijkheden bij elkaar maar geen dubbele: dus in dit geval zoekmogelijkheden (array) is: 1,2,3,4,5,6,10,11,12

Het lukt me niet om 1 query te maken die de waardes van een SET field in een array stopt en die voor elke gevonden waarde van die array een query loopt die de waardes van het andere SET field combineerd.

de manual verteld niet zo heel veel op SET fields.
Iemand een idee?

  • mjax
  • Registratie: September 2000
  • Laatst online: 14-05 11:00
Zou je zoiets normaal gesproken niet modeleren met tussentabellen ipv SET fields?

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 22-05 16:28
Dit lijkt me een verkeerde categorie bij de topic titel, zou [sql] moeten zijn, en niet php. :/

Verwijderd

Topicstarter
Ik weet niet wat standaard is maar in dit geval moet alles variabel blijven, dat is dat er categorieen en zoekmogelijkheden toegevoegd moeten kunnen worden zonder dat ik scripting hoef aan te passen.

De opzet is dat een inschrijver in meerdere categorieen geplaatst kan worden, aan elke categorie hangen zoek(lees filter) mogelijkheden die zichtbaar zijn op de site.

Bij het beheren van de inschrijvers is er de mogelijkheid om deze in meerder categorieen te plaatsen, afhankelijk van de totale lijst van zoekmogelijkheden bepaal ik welke velden noodzakelijk (veplicht) zijn om in te vullen zodat op de site geen gevens ontbreken als er binnen een bepaalde categorie gezocht wordt.

Verwijderd

Topicstarter
tot nu toe (niet werkend)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function flatten_array($array) {
   for($x = 0; $x < sizeof($array); $x++) {
       $element = $array[$x];
       if(is_array($element)) {
           $results = flatten_array($element);
           for($y = 0; $y < sizeof($results); $y++) {
               $flat_array[] = $results[$y];
           }
       } else {
           $flat_array[] = $element;
       }
   }
   return $flat_array;
}

$nummer = $nummer;
$waarden = mysql_query("SELECT in_categorie FROM inschrijvers WHERE nummer = \"$nummer\", $conn);
$alles = array(mysql_result($waarden,0,"in_categorie"));
$zoekdingen = '';
for($x = 0; $x < sizeof($alles); $x++) {
       $element = $array[$x];
       $combi = mysql_query("SELECT zoekmogelijkheden FROM categorie WHERE id_categorie = '$element'",$conn);
        $zoekdingen = array(mysql_result($combi,0,"zoekmogelijkheden"));
        }
       print_r(flatten_array($zoekdingen));

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:49

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 04 augustus 2004 @ 12:41:
Ik weet niet wat standaard is maar in dit geval moet alles variabel blijven, dat is dat er categorieen en zoekmogelijkheden toegevoegd moeten kunnen worden zonder dat ik scripting hoef aan te passen.

De opzet is dat een inschrijver in meerdere categorieen geplaatst kan worden, aan elke categorie hangen zoek(lees filter) mogelijkheden die zichtbaar zijn op de site.

Bij het beheren van de inschrijvers is er de mogelijkheid om deze in meerder categorieen te plaatsen, afhankelijk van de totale lijst van zoekmogelijkheden bepaal ik welke velden noodzakelijk (veplicht) zijn om in te vullen zodat op de site geen gevens ontbreken als er binnen een bepaalde categorie gezocht wordt.
Een tussentabel kan hiermee prima toch?

Men neme een tabel voor de categorien, en een tabel voor de filters. En een tabel waarin je het id van categorie en het id van de filter opneemt om de boel aan elkaar te koppelen. Zo kan je elke categorie aan 1 of meerdere filters koppelen en kan elke filter gekoppeld zitten aan 1 of meerdere categorien. Lijkt me een standaard geval van een n:m relatie

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
zo ben na veel zoekwerk erachter:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$totaal = array();
     
     $categorie = mysql_query("SELECT in_categorie FROM inschrijvers WHERE nummer = '414' ",$conn);
        $in_categorie=mysql_result($categorie,0,"in_categorie");
        $elements = preg_split("/,/",$in_categorie); // Split 
 
 foreach($elements as $value) {
        
        $zoekmogelijkheden = mysql_query("SELECT zoekmogelijkheden FROM categorie WHERE id_categorie = '$value' ",$conn);
        $in_zoek=mysql_result($zoekmogelijkheden,0,"zoekmogelijkheden");
        $elements = preg_split("/,/",$in_zoek); // Split 
        
        foreach($elements as $value) 
        {
        $totaal = array_merge($totaal, $value);
        }
        
    }
    $unique = array_unique($totaal);
    foreach($unique as $val)
   {
       print "$val ";
   }

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Je datamodel is gewoon niet geschikt om er m.b.v. SQL makkelijk informatie uit te halen. Dat resulteert erin dat je veel query's moet uitvoeren om te vinden wat je zoekt.
Als je die "set-fields" vervangt door koppeltabellen, dan kan dit makkelijk in 1 query.

| Toen / Nu

Pagina: 1