Op meerdere id's selecten
Hoi,
Tijd geleden dat ik hulp heb gezocht maar hier kom ik echt niet uit.
Ik heb een database met een forum. Custom profile fiels en een ledenlijst van het forum.
Nu staan de id's van members in de ledenlijst, en ik wil members selecteren op een bepaalde waarde van het custom profile field. (Nog te volgen?)
Dus doe ik:
Hieruit krijg ik een array (met fetch array) van alle member id's die de juiste waardes daar hebben.
Vervolgens gooi ik deze door een foreach loopje en haal de eerste 2-3 tekens weg:
Maar nu heb ik het met AND en met or en dergelijke geprobeerd, krijg alleen maar 1 result eruit.
Even volledig stukje code waarom het gaat:
Kort samengevat, ik wil graag weten hoe ik op meerdere id's kan selecteren in 1 query. Allemaal op id_member.
Tijd geleden dat ik hulp heb gezocht maar hier kom ik echt niet uit.
Ik heb een database met een forum. Custom profile fiels en een ledenlijst van het forum.
Nu staan de id's van members in de ledenlijst, en ik wil members selecteren op een bepaalde waarde van het custom profile field. (Nog te volgen?)
Dus doe ik:
Code (php)
1
mysql_query("SELECT id_member FROM smot_themes WHERE variable = 'cust_member4' AND value = '[SMoT]' ORDER BY id_member ASC");
Hieruit krijg ik een array (met fetch array) van alle member id's die de juiste waardes daar hebben.
Vervolgens gooi ik deze door een foreach loopje en haal de eerste 2-3 tekens weg:
Code (php)
1
2
3
4
2
3
4
foreach($res as $key => $temp){
$qp .= "AND id_member = '".$temp."'";
}
$qp = substr($qp,3);
$qp .= "AND id_member = '".$temp."'";
}
$qp = substr($qp,3);
Maar nu heb ik het met AND en met or en dergelijke geprobeerd, krijg alleen maar 1 result eruit.
Even volledig stukje code waarom het gaat:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$res = mysql_query("SELECT id_member FROM smot_themes WHERE variable = 'cust_member4' AND value = '[SMoT]' ORDER BY id_member ASC");
$qp = NULL;
$res = mysql_fetch_array($res);
foreach($res as $key => $temp){
$qp .= "OR id_member = '".$temp."'";
}
$qp = substr($qp,2);
$resu = mysql_query("SELECT * FROM smot_members WHERE".$qp." ORDER BY id_member ASC") or trigger_error(mysql_error());
while ($res = mysql_fetch_array($resu)) {
echo "Username:".$res['member_name'];
}
?>
$res = mysql_query("SELECT id_member FROM smot_themes WHERE variable = 'cust_member4' AND value = '[SMoT]' ORDER BY id_member ASC");
$qp = NULL;
$res = mysql_fetch_array($res);
foreach($res as $key => $temp){
$qp .= "OR id_member = '".$temp."'";
}
$qp = substr($qp,2);
$resu = mysql_query("SELECT * FROM smot_members WHERE".$qp." ORDER BY id_member ASC") or trigger_error(mysql_error());
while ($res = mysql_fetch_array($resu)) {
echo "Username:".$res['member_name'];
}
?>
Kort samengevat, ik wil graag weten hoe ik op meerdere id's kan selecteren in 1 query. Allemaal op id_member.
Gewijzigd op 01/01/1970 01:00:00 door Danny Appeldoorn
Gesponsorde koppelingen:
Probeer eens zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
// ...
$where = "";
foreach($res as $key => $temp){
$where .= ($key>0 ? " OR " : "WHERE "). "id_member = '". $temp ."'";
}
$sql = "SELECT * FROM smot_members ". $where ." ORDER BY id_member ASC";
$resu = mysql_query($sql) or trigger_error(mysql_error());
// ...
?>
// ...
$where = "";
foreach($res as $key => $temp){
$where .= ($key>0 ? " OR " : "WHERE "). "id_member = '". $temp ."'";
}
$sql = "SELECT * FROM smot_members ". $where ." ORDER BY id_member ASC";
$resu = mysql_query($sql) or trigger_error(mysql_error());
// ...
?>
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
Het kan nog een stuk sneller/beter dan dat je nu hebt. MySQL kent subqueries, dat zou er dan ongeveer zo uitzien:
Ik betwijfel alleen of het werkt met de ORDER BY in de subquery zelf. Desnoods zal je die even na de subquery moeten zetten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
*
FROM
smot_members
WHERE
id_member IN (
SELECT
id_member
FROM
smot_themes
WHERE
variable = 'cust_member4' AND
value = '[SMoT]'
ORDER BY
id_member ASC
)
*
FROM
smot_members
WHERE
id_member IN (
SELECT
id_member
FROM
smot_themes
WHERE
variable = 'cust_member4' AND
value = '[SMoT]'
ORDER BY
id_member ASC
)
Ik betwijfel alleen of het werkt met de ORDER BY in de subquery zelf. Desnoods zal je die even na de subquery moeten zetten.
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
Bedankt, en het werkt wel met de id in de subquery, heb er nog niet genoeg leden in staan. Maar zover ik nu zie klopt het, anders plaats ik hem er wel buiten.



