Dubbele waarden als 1 samenvatten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Flip --

Flip --

10/09/2012 14:32:17
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  $string
= 'WHERE KlantID = ' . $record['KlantID'];
?>


Straks zul je toch eens moeten gaan kijken naar die JOINS, want dit is niet echt "the way to go".
Gewijzigd op 10/09/2012 14:33:39 door Flip --
 
PHP hulp

PHP hulp

08/05/2024 16:30:53
 
David M

David M

10/09/2012 14:36:15
Quote Anchor link
Dat leest SQL als:
(KLANT_ID = 1) or (2)
KLANT_ID = 1 -> is soms waar
2 -> is positief dus is altijd waar

OK maar mijn KLantID komt ook uit de Database en zit dus in $record["KLantID"] en als ik dit iv KLantID=1 or enz.... invoer werkt het weer niet

Toevoeging op 10/09/2012 14:41:16:

JOINS .. ik heb ook gevoel dat niet wat to go is, maar voorlopig is het, het uitlezen van 1 tabel waarbij KLANT_ID een variable is,of bedoel je Klanten tabel JOIN met de rest....
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/09/2012 14:46:47
Quote Anchor link
En dan kom je dus ongeveer uit op de query die ik je in het begin gaf, dus wat is de query waarmme je de (online?)klanten ophaalt?
 
David M

David M

10/09/2012 14:55:52
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT * FROM tbl_Klanten WHERE Postcode_ondernemer BETWEEN ".($_SESSION['postcode'] - 100) ." AND ".($_SESSION['postcode'] + 100)." AND KLANT_ID=".$record_03["1"];
 
Eddy E

Eddy E

10/09/2012 15:30:11
Quote Anchor link
Je hebt al dus een vaste klant (KLANT_ID)?
Waarom dan nog die postcode?
 
David M

David M

10/09/2012 15:47:02
Quote Anchor link
postcode is nodig om te zoeken in een bepaalde regio. Je moet denken aan de website thuisbezorgd.nl.... iemand voert postcode in en je krijgt aantal restaurants in de buurt
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/09/2012 16:10:10
Quote Anchor link
David,
Volgens mij gooi je nu een aantal dingen door elkaar en/of je hebt6 de database niet goed opgebouwd.
Probeer eens wat duidelijker uit te leggen wat precies de bedoeling is.
 
David M

David M

10/09/2012 16:19:34
Quote Anchor link
OK Ger doe mijn best:

Ik heb 3 tabellen. (tbl_Klanten, tbl_KPK en tbl_Keukens)

van tabel tbl_Klanten is alleen belangrijk (voor deze kwestie) de KLANT_ID .

Stel nu dat ik dmv een session 4 klanten genereer.

tbl_KPK bestaat uit:
KPK_ID (PK) - KLANT_ID - KEUKEN_ID
1 1 1
2 1 2
3 2 1
4 2 2
5 3 1
6 3 3

tbl_Keuken bestaat uit:
KEUKEN_ID - keuken_naam
1 pizza
2 chinees
3 mexicaans

als ik nu In een Session klant 1 en 2 heb wil ik gedisplayd hebben:

pizza (2)
chinees (2)

want klant 1 heeft 1 x pizza en 1 x chinees en klant 2 idem, dus totaal is er 2 pizza en 2 x chinees te selecteren.

alvast 1000 x dank!






Toevoeging op 10/09/2012 16:20:24:

Stel nu dat ik dmv een session 4 klanten genereer. -> 2 klanten bedoel ik
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/09/2012 16:43:16
Quote Anchor link
Ik zal je eerst even laten zien wat er allemaal mogelijk is in één querie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
26
27
28
29
30
31
SELECT klant_naam, keuken_naam, aantal
FROM
(SELECT
    kl.klant_naam,
    ke.keuken_naam,
    COUNT(keuken_id) AS aantal
FROM
    klanten AS kl
LEFT JOIN
    tbl_KPK USING (klant_id)
LEFT JOIN
    tbl_keukens AS ke USING (keuken_id)
GROUP BY
    ke.keuken_naam, kl.klant_naam ASC
WITH ROLLUP) AS r
ORDER BY klant_naam, keuken_naam
->
+ --------------- + ---------------- + ----------- +
| klant_naam      | keuken_naam      | aantal      |
+ --------------- + ---------------- + ----------- +
|                 |                  | 5           |
|                 | Chinees          | 1           |
|                 | Patat            | 1           |
|                 | Pizza            | 3           |
| klant 1         | Chinees          | 1           |
| klant 1         | Pizza            | 1           |
| klant 2         | Patat            | 1           |
| klant 2         | Pizza            | 1           |
| klant 3         | Pizza            | 1           |
+ --------------- + ---------------- + ----------- +
9 rows

Zo nu eerst een Bavaria!
 
David M

David M

10/09/2012 16:45:45
Quote Anchor link
Hi Ger wacht nog even met die Bavaria, ik stoei nog enorm waar ik WHERE KLANT_ID = $record["KLANT_ID"] moet plaatsen om bijvoorbeeld alleen klant 1 en klant 2 te displayen.

Toevoeging op 10/09/2012 17:00:02:

Kan ik dit script ergens de code WHERE KLANT_ID = $record["KLANT_ID"]
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
"SELECT tbl_Klanten.KLANT_ID, tbl_KPK.KEUKEN_ID
      FROM tbl_Klanten LEFT JOIN tbl_KPK  
      ON tbl_Klanten.KLANT_ID=tbl_KPK.KLANT_ID

";
  
  $result=  mysql_query($sql);
  while($record=  mysql_fetch_array($result)){
      echo $record["KLANT_ID"]."-".$record["KEUKEN_ID"];
      echo "<br>";    
        
  }


Toevoeging op 10/09/2012 17:00:30:

KWIJT
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/09/2012 17:09:22
Quote Anchor link
Ik had dorst ;-)
BTB
Hoe bepaal jij dan welke klant_id's in een 'sessie'. Zo te zien uit een query.
Een join is niets meer dan kolommen uit meerdere tabellen (onder bepaalde voorwaarden) samenvoegen tot één virtuele tabel.
Dus als je voor de group by een where clause invoegt, krijg je hetzelfde effect als met afzonderlijke queries te werken.
 
David M

David M

10/09/2012 17:14:55
Quote Anchor link
Ja bepaal klanten uit een query.
Ik kan helaas (wegens gebrek aan kennis ) jouw query niet reproduceren. Kan ik niet even langs rijden met kratjes bavaria..... :-)






Toevoeging op 10/09/2012 17:21:42:

Ger als ik inderdaad boven GROUP BY ...WHERE gebruik kan ik dat net zoals by Flip eerder vandaag alleen maar aangeven WHERE KLANT_ID=1 OR KLANT_ID=2 enz... en niet WHERE KLANT_ID=$record["KLANT_ID"] ? Hoe zou ik dit moeten noteren?

PS meen het van die krat of ......
 
Flip --

Flip --

10/09/2012 18:44:44
Quote Anchor link
David check je PM's
 
David M

David M

10/09/2012 19:30:33
Quote Anchor link
Ger het ziet er naar uit dat je de Query's uit je mouw schudt, zou je naar dze kunnen kijken:

Deze werken afzonderlijk :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$sql="SELECT
                   tbl_KPK.KEUKEN_ID,
                   tbl_Keukens.keuken_naam
                  
                
                 FROM tbl_KPK LEFT JOIN tbl_Keukens
                 ON tbl_KPK.KEUKEN_ID=tbl_Keukens.KEUKEN_ID
                 WHERE KLANT_ID=1 OR KLANT_ID=2
                 GROUP BY keuken_naam";


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$sql="SELECT KEUKEN_ID,
                 COUNT(*) AS aantal
                 FROM tbl_KPK
                
                 WHERE KLANT_ID=1 or KLANT_ID=2
                 GROUP BY KEUKEN_ID";


NU nog combineren en tot slot WHERE KLANT_ID= uit database......

Toevoeging op 10/09/2012 22:30:20:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT KEUKEN_ID, keuken_naam, aantal
FROM
(SELECT
 ki.KEUKEN_ID,
 ke.keuken_naam,
COUNT(KEUKEN_ID) AS aantal
FROM tbl_KPK AS ki
LEFT JOIN
tbl_Keukens AS ke USING (KEUKEN_ID)
WHERE KLANT_ID=1
GROUP BY
ke.keuken_naam
WITH ROLLUP) AS r


bovenstaand komt erg in de buurt van hetgeen ik zou willen, maar ik moet nu handmatig invoeren WHERE KLANT_ID=1 OR KLANT_ID=2....enz.

Terwijl als ik echo $record[KLANT_ID]; een uitkomst krijg van (bijvoorbeeld) 1245 moet ik dit omvormen via PHP script naar KLANT_ID=1 or enz enz of is hier een handigheidje in de schrijfwijze voor?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/09/2012 06:43:46
Quote Anchor link
Als je verschillende waardes in een variabele wilt zetten maak je een array van die variabele:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$klantenids
= array()
//dan kan je elke keer  als je een id wilt
//toevoegen heel simpel

$klantenids[] = 1; // 1 komt dan bv uit $record['klant_id']
//SQl heeft de optie om te controleren of waardes in een lijst voorkomen
//met WHERE waarde IN ('check1', 'check2')

$where = "\t" . "WHERE klant_id IN ('";
$where .= implode("','" , $klantenids) . "')" . PHP_EOL;
// echo $where zou dit geven
// WHERE klant_id IN ('1','2','4','5')

?>

Als je $where dus op de juiste plaats in de query plakt, heb je wat je wilt.
Gewijzigd op 11/09/2012 08:49:29 door Ger van Steenderen
 
David M

David M

11/09/2012 08:41:07
Quote Anchor link
Zo werkt het niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT KEUKEN_ID, keuken_naam, aantal
FROM
(SELECT
 ki.KEUKEN_ID,
 ke.keuken_naam,
COUNT(KEUKEN_ID) AS aantal
FROM tbl_KPK AS ki
LEFT JOIN
tbl_Keukens AS ke USING (KEUKEN_ID)
WHERE KLANT_ID=".$where."
GROUP BY
ke.keuken_naam
WITH ROLLUP) AS r
ORDER BY keuken_naam
";
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/09/2012 08:47:56
Quote Anchor link
echo $where
output:
WHERE klant_id IN ('1','2','4','5')
dus:
WHERE KLANT_ID=WHERE klant_id IN ('1','2','4','5')
is wat jij krijgt.
 
David M

David M

11/09/2012 08:47:58
Quote Anchor link
Hi Ger:

echo $where; geeft dit als uitkomst:
WHERE KLANT_ID IN ('1') WHERE KLANT_ID IN (' WHERE KLANT_ID IN ('1') 1') WHERE KLANT_ID IN (' WHERE KLANT_ID IN (' WHERE KLANT_ID IN ('1') 1') 1') WHERE KLANT_ID IN (' WHERE KLANT_ID IN (' WHERE KLANT_ID IN (' WHERE KLANT_ID IN ('1') 1') 1') 1')
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/09/2012 08:50:31
Quote Anchor link
Ik was een ; vergeten op regel 8 in de code :-(
 
David M

David M

11/09/2012 10:29:10
Quote Anchor link
Ger is onderstaand de manier om $where te plaatsen, want het werkt zo niet bij mij:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT KEUKEN_ID, keuken_naam, aantal
FROM
(SELECT
 ki.KEUKEN_ID,
 ke.keuken_naam,
COUNT(KEUKEN_ID) AS aantal
FROM tbl_KPK AS ki
LEFT JOIN
tbl_Keukens AS ke USING (KEUKEN_ID)
WHERE KLANT_ID=".$where."
GROUP BY
ke.keuken_naam
WITH ROLLUP) AS r
ORDER BY keuken_naam


uitkomst:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/ws/view/templates/klanten_inner_left_test.phtml on line 52

Toevoeging op 11/09/2012 10:32:29:

echo $where : WHERE KLANT_ID IN ('1') WHERE KLANT_ID IN ('1') WHERE KLANT_ID IN ('1') WHERE KLANT_ID IN ('1')

Toevoeging op 11/09/2012 10:45:07:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$klantenids
= array();
//dan kan je elke keer  als je een id wilt
//toevoegen heel simpel

$klantenids[] = $record['KLANT_ID']; // 1 komt dan bv uit $record['klant_id']
//SQl heeft de optie om te controleren of waardes in een lijst voorkomen
//met WHERE waarde IN ('check1', 'check2')

$where = "\t" . "WHERE klant_id IN ('";
$where .= implode("','" , $klantenids) . "')" . PHP_EOL;
// echo $where zou dit geven
// WHERE klant_id IN ('1','2','4','5')


echo $where;
?>





Nu:
WHERE klant_id IN ('1') WHERE klant_id IN ('2') WHERE klant_id IN ('4') WHERE klant_id IN ('5')
 

Pagina: « vorige 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.