login  Naam:   Wachtwoord: 
Registreer je!
 Forum

SETs vergelijken

Offline klostpret - 30/08/2005 11:28
Avatar van klostpretHTML interesse Ik heb twee tabellen, en uit elke tabel heb ik één veld gehaald (van 1 ID)

Beide zijn dat zogenaamde SET-s.

Uit tabel 1 komt bijvoorbeeld: 'jan','piet','kees','leen','koos','herman','dik'
Uit tabel 2 komt: 'kees','koos'

Ik wil nu, dat hij beide mety elkaar vergelijkt. Ik wil kees en koos afzonderlijk laten afdrukken. Hoe doe ik dat?

6 antwoorden

Gesponsorde links
Offline Thomas - 30/08/2005 12:00 (laatste wijziging 30/08/2005 12:01)
Avatar van Thomas Moderator Arrays van maken en dan van de array-functie array_intersect op deze arrays toepassen.
Offline klostpret - 02/09/2005 11:09
Avatar van klostpret HTML interesse Om er nog even op terug te komen, ik heb nu het volgende proleem:

Ik vergelijk de twee sets op deze manier:

$arr1=explode(",",$obj1->set1);
$arr2=explode(",",$obj2->set2);
$arr3=array_intersect($arr1,$arr2);

Vervolgens rolt er dus wat uit.
Nu heb ik een derde veld, (VARCHAR), maar die waardes bevat op de manier van een SET, alleen dan komen bepaalde waarden meerdere keren voor. (het zijn getallen).
Voor elke waarde is set2 heb ik een waarde in set3 staan. (wat de kosten aangeeft van iets in set2)
set1 is een algemene rij, die ik uit een andere tabel haal.

Wat moet er dus gebeuren:
- Set 1 en Set 2 moeten worden vergeleken, en de waardes die ze gemeen hebben, moeten in een array worden geplaatst.
- Voor elke waarde in die array, moet het goede getal uit Set 3 worden gehaald.
- Met een foreach-lus, moet elke waarde van set 2 verwerkt worden, waar tegelijkertijd, de goede waarde van set 3 wordt verwerkt.

Is dit mogelijk, en zo ja, hoe?
Offline Thomas - 02/09/2005 13:04
Avatar van Thomas Moderator Geef eens een voorbeeld, want ik snap niet echt wat de bedoeling is .
Offline klostpret - 02/09/2005 13:45 (laatste wijziging 05/09/2005 14:38)
Avatar van klostpret HTML interesse ok.

ik heb verschillende tabellen (waaruit ik enkele velden hier neerzet):
Tabel 1
id (INT(10))
groenteboer (VARCHAR(255))
verkoopt (SET: 'appels','peren','pruimen','kersen','sinaasappels','mandarijnen','komkommers','tomaten' )
kosten (VARCHAR(255))


Tabel 2
id (INT(10))
producent (VARCHAR(255))
gebruikt (SET: 'appels','peren','pruimen','kersen','sinaasappels','mandarijnen','komkommers','tomaten')


  1. <?php
  2. $query1=mysql_query("SELECT * FROM tabel1 WHERE id='x'");
  3. $query2=mysql_query("SELECT * FROM tabel2 WHERE id='x2'");
  4. $obj1=mysql_fetch_object($query1);
  5. $obj2=mysql_fetch_object($query2);
  6.  
  7. $verkoopt=explode(",",$obj1->verkoopt);
  8. $gebruikt=explode(",",$obj2->gebruikt);
  9.  
  10. $kanhalen=array_intersect($verkoopt,$gebruikt);
  11.  
  12. foreach ($kanhalen as $k) {
  13. echo ucwords($k)."&nbsp;kost[i]???[/i]";
  14. }
  15. ?>


In de tabel staan de volgende gegevens:

tabel 1:
id|groenteboer|verkoopt|kosten
1|jansen|tomaten,komkommers|1,3
2|petersen|appels,peren,pruimen,kersen,tomaten|2,2,1,4,3
3|harmsen|appels,pruimen,mandarijnen,tomaten,komkommers|1,3,4,3,3

tabel 2:
id|producent|gebruikt
1|moppen|appels,tomaten


Ik wil:
stel, we laten de producent Moppen inkopen bij Jansen:
x=1 x2=1
$kanhalen bevat alleen "tomaten".
nu moet hij de kosten van die tomaten ook eruithalen, zodat dat kan worden verwerkt op de plaats van de drie vraagtekens.

Bedankt!

EDIT: Geen reactie's?
Offline Thomas - 05/09/2005 19:15
Avatar van Thomas Moderator Je zult dan de indexen van de prijzen (kosten) af moeten leiden aan de hand van de indexen van de verkochte artikelen die in de doorsnede (array_intersect) zitten... Dit doet array_search($waarde, $array) - deze functie retourneert de index van $array waar $waarde staat...

Wat misschien netter is het volgende:

tabel "groenteboer":
id (int)
groenteboer (varchar)
en wat je nog meer wilt bijhouden

koppeltabel "verkoopt":
id
groenteboer_id
produkt_id

tabel "produkten":
id
produkt
prijs

Door je gegevens meer te structureren, kun je er ook makkelijker informatie uit halen .
Offline Fenrir - 05/09/2005 20:18
Avatar van Fenrir PHP expert Er moet duidelijk een database-normalisatie-tutorial komen.

http://www.sum-...is010.php3
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.185s