AND OR in sql
Ik de volgende query voor een form waar je kan zoeken op vacatures.
Nu kan je laten zoeken op diverse waarden, echter je moet verplicht alles invullen.
Hoe kan ik bijvoorbeeld alle vacatures te voorschijn laten komen als ik alleen region bijvoorbeeld wil selecteren in mijn form....
Dit heb ik momenteel :
Edit:
Volledige script nu geplaats
Volledige script nu geplaats
Code (php)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<?php
$query = "SELECT *
FROM vacatures
WHERE job_type='" . mysql_real_escape_string($_POST['job_type']) . "'
ORDER BY region DESC";
$result = mysql_query($query) or die(mysql_error());
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="Post"><br />
<h3 class="lime">Zoek vacatures</h3>
<table id="home_search">
<tr>
<th class="oranje">Dienstverband</th>
<th class="oranje">Beroepsgroepen</th>
<th class="oranje">Locaties</th>
<th class="oranje">Trefwoorden</th>
</tr>
<tr>
<td style="vertical-align: top; text-align: right;"><select id="job_type" name="job_type"><option value=''>Kies hier...</option>
<option value="1">Fulltime ( Starter )</option>
<option value="4">Fulltime (doorgroeifunctie)</option>
<option value="2">Stage</option>
<option value="3">Vakantiewerk</option>
</select></td>
<td style="vertical-align: top; text-align: right;"><select id="function" name="function"><option value=''>Kies hier...</option>
<option value="1">Elektrotechnisch / Electronica</option>
<option value="2">Bouw / Civiel technisch</option>
<option value="3">Technisch / Klusser / Monteur</option>
<option value="4">Projectmanagement</option>
<option value="5">ICT</option>
<option value="6">Administratief</option>
<option value="7">Algemeen management</option>
<option value="8">Chemisch / Farmaceutisch</option>
<option value="9">Metaaltechnisch / Werktuigbouwkundig</option>
<option value="10">Personeel en Organisatie</option>
</select></td>
<td style="vertical-align: top; text-align: right;"><select id="region" name="region"><option value=''>Kies hier...</option><option value="1">Alkmaar</option>
<option value="2">Almelo</option>
<option value="3">Almere</option>
<option value="4">Alphen aan den Rijn</option>
<option value="5">Amersfoort</option>
<option value="6">Amsterdam</option>
<option value="7">Apeldoorn</option>
<option value="8">Arnhem</option>
<option value="9">Assen</option>
<option value="10">Baarn</option>
<option value="11">Bergen op Zoom</option>
<option value="12">Breda</option>
<option value="13">Culemborg</option>
<option value="14">Delft</option>
<option value="15">Den Bosch</option>
<option value="16">Den Haag</option>
<option value="17">Deventer</option>
<option value="18">Doetinchem</option>
<option value="19">Dordrecht</option>
<option value="20">Drachten</option>
<option value="21">Driebergen</option>
<option value="22">Dronten</option>
<option value="23">Ede</option>
<option value="24">Eindhoven</option>
<option value="25">Emmen</option>
<option value="26">Enschede</option>
<option value="27">Gorinchem</option>
<option value="28">Gouda</option>
<option value="29">Groningen</option>
<option value="30">Haarlem</option>
<option value="31">Harderwijk</option>
<option value="32">Heerenveen</option>
<option value="33">Heerlen</option>
<option value="34">Helmond</option>
<option value="35">Hengelo</option>
<option value="36">Hilversum</option>
<option value="37">Hoofddorp</option>
<option value="38">Hoogeveen</option>
<option value="39">Hoorn</option>
<option value="40">Kampen</option>
<option value="41">Leeuwarden</option>
<option value="42">Leiden</option>
<option value="43">Lelystad</option>
<option value="44">Maastricht</option>
<option value="45">Naaldwijk</option>
<option value="46">Nijmegen</option>
<option value="47">Oosterhout</option>
<option value="48">Oss</option>
<option value="49">Rijswijk</option>
<option value="50">Roermond</option>
<option value="51">Roosendaal</option>
<option value="52">Rotterdam</option>
<option value="53">Schiphol</option>
<option value="54">Sittard</option>
<option value="55">Tilburg</option>
<option value="56">Uden</option>
<option value="57">Utrecht</option>
<option value="58">Veenendaal</option>
<option value="59">Velp</option>
<option value="60">Venlo</option>
<option value="61">Vlissingen</option>
<option value="62">Waalwijk</option>
<option value="63">Wageningen</option>
<option value="64">Zaandam</option>
<option value="65">Zoetermeer</option>
<option value="66">Zutphen</option>
<option value="67">Zwolle</option>
</select></td>
<td style="vertical-align: top; text-align: right;"><input id="keyword" name="keyword" type="text" /></td>
</tr>
<tr>
<td colspan="1" style="vertical-align: top;">
</td>
<td colspan="3" style="vertical-align: top; text-align: right;">
<input name="Submit" type="Submit" id="Submit" value="Zoek" /></td>
</tr>
</table>
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['job_type'], $_POST['function'], $_POST['region'], $_POST['keyword']))
{
$query = "SELECT *
FROM vacatures
WHERE job_type='" . mysql_real_escape_string($_POST['job_type']) . "'
AND function='" . mysql_real_escape_string($_POST['function']) . "'
AND region='" . mysql_real_escape_string($_POST['region']) . "'
AND keyword='" . mysql_real_escape_string($_POST['keyword']) . "'
ORDER BY region DESC";
$result = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($result) == 0)
{
echo '<table width="100%" border="0">
<tr>
<td colspan="4">Er zijn geen vacatures gevonden die aan uw criteria voldoen</td>
</tr>
</table>';
}
else
{
echo '<table width="100%" border="0">';
echo '<tr>
<td colspan="3"\><strong>De volgende vacatures zijn voor u gevonden : </strong></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Titel : </td>
<td>Jobtype : </td>
<td>Functie:</td>
<td>Regio : </td>
<td>Gezocht op :</td>
</tr>';
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result ))
{
echo '<tr>
<td><a href="'.$row['url'].'" target="_blank">'.$row['titel'].'</a></td>
<td>'.$row['job_type'].'</td>
<td>'.$row['function'].'</td>
<td>'.$row['region'].'</td>
<td>'.$row['keyword'].'</td>
</tr>';
}
echo '</table>';
}
}
}
?>
$query = "SELECT *
FROM vacatures
WHERE job_type='" . mysql_real_escape_string($_POST['job_type']) . "'
ORDER BY region DESC";
$result = mysql_query($query) or die(mysql_error());
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="Post"><br />
<h3 class="lime">Zoek vacatures</h3>
<table id="home_search">
<tr>
<th class="oranje">Dienstverband</th>
<th class="oranje">Beroepsgroepen</th>
<th class="oranje">Locaties</th>
<th class="oranje">Trefwoorden</th>
</tr>
<tr>
<td style="vertical-align: top; text-align: right;"><select id="job_type" name="job_type"><option value=''>Kies hier...</option>
<option value="1">Fulltime ( Starter )</option>
<option value="4">Fulltime (doorgroeifunctie)</option>
<option value="2">Stage</option>
<option value="3">Vakantiewerk</option>
</select></td>
<td style="vertical-align: top; text-align: right;"><select id="function" name="function"><option value=''>Kies hier...</option>
<option value="1">Elektrotechnisch / Electronica</option>
<option value="2">Bouw / Civiel technisch</option>
<option value="3">Technisch / Klusser / Monteur</option>
<option value="4">Projectmanagement</option>
<option value="5">ICT</option>
<option value="6">Administratief</option>
<option value="7">Algemeen management</option>
<option value="8">Chemisch / Farmaceutisch</option>
<option value="9">Metaaltechnisch / Werktuigbouwkundig</option>
<option value="10">Personeel en Organisatie</option>
</select></td>
<td style="vertical-align: top; text-align: right;"><select id="region" name="region"><option value=''>Kies hier...</option><option value="1">Alkmaar</option>
<option value="2">Almelo</option>
<option value="3">Almere</option>
<option value="4">Alphen aan den Rijn</option>
<option value="5">Amersfoort</option>
<option value="6">Amsterdam</option>
<option value="7">Apeldoorn</option>
<option value="8">Arnhem</option>
<option value="9">Assen</option>
<option value="10">Baarn</option>
<option value="11">Bergen op Zoom</option>
<option value="12">Breda</option>
<option value="13">Culemborg</option>
<option value="14">Delft</option>
<option value="15">Den Bosch</option>
<option value="16">Den Haag</option>
<option value="17">Deventer</option>
<option value="18">Doetinchem</option>
<option value="19">Dordrecht</option>
<option value="20">Drachten</option>
<option value="21">Driebergen</option>
<option value="22">Dronten</option>
<option value="23">Ede</option>
<option value="24">Eindhoven</option>
<option value="25">Emmen</option>
<option value="26">Enschede</option>
<option value="27">Gorinchem</option>
<option value="28">Gouda</option>
<option value="29">Groningen</option>
<option value="30">Haarlem</option>
<option value="31">Harderwijk</option>
<option value="32">Heerenveen</option>
<option value="33">Heerlen</option>
<option value="34">Helmond</option>
<option value="35">Hengelo</option>
<option value="36">Hilversum</option>
<option value="37">Hoofddorp</option>
<option value="38">Hoogeveen</option>
<option value="39">Hoorn</option>
<option value="40">Kampen</option>
<option value="41">Leeuwarden</option>
<option value="42">Leiden</option>
<option value="43">Lelystad</option>
<option value="44">Maastricht</option>
<option value="45">Naaldwijk</option>
<option value="46">Nijmegen</option>
<option value="47">Oosterhout</option>
<option value="48">Oss</option>
<option value="49">Rijswijk</option>
<option value="50">Roermond</option>
<option value="51">Roosendaal</option>
<option value="52">Rotterdam</option>
<option value="53">Schiphol</option>
<option value="54">Sittard</option>
<option value="55">Tilburg</option>
<option value="56">Uden</option>
<option value="57">Utrecht</option>
<option value="58">Veenendaal</option>
<option value="59">Velp</option>
<option value="60">Venlo</option>
<option value="61">Vlissingen</option>
<option value="62">Waalwijk</option>
<option value="63">Wageningen</option>
<option value="64">Zaandam</option>
<option value="65">Zoetermeer</option>
<option value="66">Zutphen</option>
<option value="67">Zwolle</option>
</select></td>
<td style="vertical-align: top; text-align: right;"><input id="keyword" name="keyword" type="text" /></td>
</tr>
<tr>
<td colspan="1" style="vertical-align: top;">
</td>
<td colspan="3" style="vertical-align: top; text-align: right;">
<input name="Submit" type="Submit" id="Submit" value="Zoek" /></td>
</tr>
</table>
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['job_type'], $_POST['function'], $_POST['region'], $_POST['keyword']))
{
$query = "SELECT *
FROM vacatures
WHERE job_type='" . mysql_real_escape_string($_POST['job_type']) . "'
AND function='" . mysql_real_escape_string($_POST['function']) . "'
AND region='" . mysql_real_escape_string($_POST['region']) . "'
AND keyword='" . mysql_real_escape_string($_POST['keyword']) . "'
ORDER BY region DESC";
$result = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($result) == 0)
{
echo '<table width="100%" border="0">
<tr>
<td colspan="4">Er zijn geen vacatures gevonden die aan uw criteria voldoen</td>
</tr>
</table>';
}
else
{
echo '<table width="100%" border="0">';
echo '<tr>
<td colspan="3"\><strong>De volgende vacatures zijn voor u gevonden : </strong></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Titel : </td>
<td>Jobtype : </td>
<td>Functie:</td>
<td>Regio : </td>
<td>Gezocht op :</td>
</tr>';
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result ))
{
echo '<tr>
<td><a href="'.$row['url'].'" target="_blank">'.$row['titel'].'</a></td>
<td>'.$row['job_type'].'</td>
<td>'.$row['function'].'</td>
<td>'.$row['region'].'</td>
<td>'.$row['keyword'].'</td>
</tr>';
}
echo '</table>';
}
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Dennis
Geen and maar or gebruiken?
De queries dynamisch samenstellen en alleen die kolommen erin opnemen waar ook daadwerkelijk gegevens voor ingevuld zijn?
Er zijn geen vacatures gevonden die aan uw criteria voldoen
@ Blanche : Hoe bedoel je dat precies ?
Opgelost! :)
Geef ook hier je oplossing nog even, dan hebben anderen er wellicht wat aan...
Ik heb dit opgelost op de volgende manier :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['job_type'], $_POST['function'], $_POST['region']))
{
$query = "SELECT *
FROM vacatures
WHERE job_type='" . mysql_real_escape_string($_POST['job_type']) . "'
OR (job_type='" . mysql_real_escape_string($_POST['job_type']) . "' AND function='" . mysql_real_escape_string($_POST['function']) . "')
OR (job_type='" . mysql_real_escape_string($_POST['job_type']) . "' AND region='" . mysql_real_escape_string($_POST['region']) . "')
OR function='" . mysql_real_escape_string($_POST['function']) . "'
OR (function='" . mysql_real_escape_string($_POST['function']) . "' AND region='" . mysql_real_escape_string($_POST['region']) . "')
OR region='" . mysql_real_escape_string($_POST['region']) . "'
ORDER BY region DESC";
?>
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['job_type'], $_POST['function'], $_POST['region']))
{
$query = "SELECT *
FROM vacatures
WHERE job_type='" . mysql_real_escape_string($_POST['job_type']) . "'
OR (job_type='" . mysql_real_escape_string($_POST['job_type']) . "' AND function='" . mysql_real_escape_string($_POST['function']) . "')
OR (job_type='" . mysql_real_escape_string($_POST['job_type']) . "' AND region='" . mysql_real_escape_string($_POST['region']) . "')
OR function='" . mysql_real_escape_string($_POST['function']) . "'
OR (function='" . mysql_real_escape_string($_POST['function']) . "' AND region='" . mysql_real_escape_string($_POST['region']) . "')
OR region='" . mysql_real_escape_string($_POST['region']) . "'
ORDER BY region DESC";
?>
Alleen nu zou ik het nog iets fraaier willen door middel van een match percentage. Dus als je alleen functie selecteerd, de resulaten daarvan zijn dan 33,3 %...je resultaten als je 2 waarden hebt ingevuld die matchen...66,6 %
Alleen dat gaat me nu net te ver...daarbij...heb zwaar vierkante ogen nu...
Iemand een suggestie ?
De WHERE filtert alles weg dat niet dat niet voldoet aan wat je vraagt.
Eerst en vooral is het best niet de * te gebruiken, maar alle velden opsommen die je nodig hebt.
Je kan bv. ook iets doen in de zin van:
Code (php)
1
2
3
4
2
3
4
<? $query = "SELECT job_type, function, ..., (jobtype = '" . $_POST['job_type'] . "') AS voldoet_aan_jobtype, (function= '" . $_POST['function'] . "') AS voldoet_aan_function, ...
FROM vacatures
;";
?>
FROM vacatures
;";
?>
Dan kan je beginnen rekenen (in MySQL) met voldoet_aan_jobtype en voldoet_aan_jobtype. Je kan bv. nog een extra veld aanmaken dat berekent hoeveel van die velden niet NULL zijn.
Kijk, het is geen uitgewerkt voorbeeld hoor, gewoon een andere denkpiste. Ik heb niet direct een goed voorbeeld bij de hand, daarbij, het is nu 3 uur 's nachts. Als ik een uitgewerkt voorbeeld vind, post ik het.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
Wil je met die percentages werken, zou je FULL_TEXT_SEARCH moeten gebruiken. Zelf een script schrijven dat dat berekend is niet handig, het wiel opnieuw uitvinden ook niet.
Zodra ik enigszins het idee heb in de goede richting te zijn zal ik het hier direct posten...verder mocht iemand suggesties hebben om dit op een goede manier op/aan te kunnen pakken.
Feel free...
Graag wilde ik weten wat de bijbehorende tabelstructuur is. Zou je misschien de SQL van deze tabel kunnen posten . Bedankt!
(ik neem aan dat het formulier nog werkt ?