Søgning igennem relationstabeller
Hejsa.Jeg har følgende database setup:
#
# Struktur dump for tabellen `courses`
#
CREATE TABLE courses (
course_id int(3) NOT NULL auto_increment,
course_name varchar(255) NOT NULL default '',
PRIMARY KEY (course_id)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Struktur dump for tabellen `cuisines`
#
CREATE TABLE cuisines (
cuisine_id int(3) NOT NULL auto_increment,
cuisine_name varchar(255) NOT NULL default '',
PRIMARY KEY (cuisine_id)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Struktur dump for tabellen `ingred_relation`
#
CREATE TABLE ingred_relation (
ingredient_id int(3) NOT NULL default '0',
opskrift_id int(3) NOT NULL default '0',
description text NOT NULL
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Struktur dump for tabellen `ingredients`
#
CREATE TABLE ingredients (
ingredient_id int(3) NOT NULL auto_increment,
ingredient_name varchar(100) NOT NULL default '',
PRIMARY KEY (ingredient_id)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Struktur dump for tabellen `kinds`
#
CREATE TABLE kinds (
kind_id int(3) NOT NULL auto_increment,
kind_name varchar(255) NOT NULL default '',
PRIMARY KEY (kind_id)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Struktur dump for tabellen `opskrifter`
#
CREATE TABLE opskrifter (
opskrift_id int(5) NOT NULL auto_increment,
opskrift_navn varchar(255) NOT NULL default '',
opskrift_beskrivelse longtext NOT NULL,
PRIMARY KEY (opskrift_id)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Struktur dump for tabellen `relationer`
#
CREATE TABLE relationer (
opskrift_id int(3) NOT NULL default '0',
course_id int(3) NOT NULL default '0',
cuisine_id int(3) NOT NULL default '0',
kind_id int(3) NOT NULL default '0',
wine_id int(3) NOT NULL default '0'
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Struktur dump for tabellen `wines`
#
CREATE TABLE wines (
wine_id int(3) NOT NULL auto_increment,
wine_name varchar(255) NOT NULL default '',
wine_district varchar(255) NOT NULL default '',
wine_year int(4) NOT NULL default '0',
PRIMARY KEY (wine_id)
) TYPE=MyISAM;
Jeg vil gerne kunne lave en select sætning hvor jeg søger efter en variabel (f.eks. curry) hvor den skal lede alle felter igennem (undtagen dem hvor der står et id i recordnavnet)
Jeg har lavet noget der ligner:
$search_crit = " opskrift_navn LIKE '%$search%' OR ";
$search_crit .= "opskrift_beskrivelse LIKE '%$search%' OR ";
$search_crit .= "course_name LIKE '%$search%' OR ";
$search_crit .= "cuisine_name LIKE '%$search%' OR ";
$search_crit .= "ingredient_name LIKE '%$search%' OR ";
$search_crit .= "kind_name LIKE '%$search%' OR ";
$search_crit .= "wine_name LIKE '%$search%' OR ";
$search_crit .= "wine_year LIKE '%$search%' OR ";
$search_crit .= "wine_district LIKE '%$search%' OR ";
$search_crit .= "description LIKE '%$search%' ";
$sql = "SELECT * FROM ingred_relation, relationer
LEFT JOIN ingredients ON ingredients.ingredient_id = ingred_relation.ingredient_id
LEFT JOIN opskrifter ON opskrifter.opskrift_id = relationer.opskrift_id
LEFT JOIN courses ON courses.course_id = relationer.course_id
LEFT JOIN cuisines ON cuisines.cuisine_id = relationer.cuisine_id
LEFT JOIN wines ON wines.wine_id = relationer.wine_id
LEFT JOIN kinds ON kinds.kind_id = relationer.kind_id
WHERE ".$search_crit."
GROUP BY relationer.opskrift_id";
men den finder alle opskrifter uanset hvad jeg sætter som $search.
