2015-08-26 6 views
1

У меня есть две таблицы:MySQL выберите * из таблицы с конкретным ключом

CREATE TABLE IF NOT EXISTS color(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(255) NOT NULL) DEFAULT CHARSET=utf8 COLLATE=utf8_bin;' 

CREATE TABLE IF NOT EXISTS car(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    colorId INT UNSIGNED NOT NULL, 
    name VARCHAR(255) NOT NULL, 
    FOREIGN KEY (colorId) REFERENCES color(id)) DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

Как я могу выбрать имена машин с указанным colorId и название цвета от «цвета» таблицы?

+2

Сделайте СОЕДИНЕНИЕ между таблицами, с предложением WHERE выбрать цвет выбора. – jarlh

ответ

0
SELECT 
    car.name 
FROM 
    car 
    LEFT JOIN color ON car.colorId = color.id 
WHERE 
    color.name = 'Red' 

Этот запрос вернет названия автомобилей, которые являются красными. Помните, когда вы вставляете цвет в виде строки, чтобы избежать его правильного (с mysql_real_escape_string или mysqli_real_escape_string), чтобы предотвратить SQL injection.

+1

Нет смысла использовать левое соединение, когда в разделе 'WHERE' требуется ненулевое значение в правой таблице ... –

2
SELECT car.Name 
     ,color.Name 
FROM Car 
INNER JOIN color ON Car.ColorId = Color.ID 
WHERE ColorID = ??? --<-- the color id you are looking for 
-1
select car.name 
from car,color 
where color.name = 'red' 
and color.id = car.colorId 


Если вы хотите, чтобы получить автомобили, которые являются красный.

0

Вот пример примера. вы можете создать свой собственный

CREATE TABLE IF NOT EXISTS color(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(255) NOT NULL) DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

CREATE TABLE IF NOT EXISTS car(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    colorId INT UNSIGNED NOT NULL, 
    name VARCHAR(255) NOT NULL, 
    FOREIGN KEY (colorId) REFERENCES color(id)) DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

insert into color(name) 
values('RED'),('BLUE'),('GREEn'),('YELLOW'),('PINK'),('ORANGE'),('WHITE'),('BLACK'); 

insert into car(colorid, name) 
values(1,'BMW'), 
(1,'AUDI'), 
(1,'ASTON MARTIN'), 
(4,'FERRARI'), 
(3,'MUSTANG'), 
(6,'SANTA FIEAA'); 

join Query.. 

select c.name, c.colorid, cl.name 
from car c 
join color cl on c.colorID = cl.id; 
+0

спасибо большое - теперь он выглядит хорошо. –

Смежные вопросы