2014-04-10 4 views
0

мои таблицы выглядеть следующим образом:ВЫБРАТЬ запрос из трех таблиц SQL

новости

id_news 
id_gallery 
headline 
content 
date 

галереи

id_gallery 
gallery_name 

изображения

id_image 
id_gallery 

И мне нужно выбрать каждое изображение для определенных новостей. Я очень незнакомый с sql, поэтому я был бы очень признателен за любую помощь. Я искал, но когда я пытаюсь использовать запросы, которые я нахожу, это просто не работает, я делаю что-то действительно не так. Помогите!

Благодарит Вас за Ваше время

+0

Вам действительно нужно изучить SQL или нанять программиста. Вы не можете рассчитывать на то, что все, что вам нужно, уже написано, или получить рэдомы в Интернете, чтобы сделать свое кодирование для вас бесплатно. – Barmar

+0

Хочешь нанять меня для некоторых «быстрых» задач? : D – TheHe

+0

Вам необходимо сделать соединение в этих таблицах, чтобы объединить и отфильтровать, чтобы получить нужные вам. – bchurchill

ответ

0
SELECT i.* 
FROM images AS i 
JOIN news AS n on n.id_gallery = i.id_gallery 
WHERE n.id_news = <selected news> 
+0

Кстати, как вы можете видеть, нужны только две таблицы. Вы ничего не используете из таблицы «галерей». – Barmar

0
SELECT a.* 
FROM images a 
JOIN news b on b.id_gallery = a.id_gallery 

Надеется, что это помогает. : D

0

Ваш вопрос довольно расплывчатым, но мне нужно вам нужно что-то вроде этого:

select i.id_image 
from news n 
    left outer join images i on n.id_gallery = i.id_gallery 
where n.id_news = 1 -- Or for whichever news id the images are needed 
+0

Почему вы используете левое соединение? Это приведет к возврату нулевого изображения, если в новостях нет изображений. – Barmar

0

Может быть что-то вроде

select id_news, id_gallery from news join images on images.id_gallary=news.id_gallery 

?

0
 
a) SELECT something : SELECT images.id_image 
b) FROM the table images : FROM images 
d) Where the id_gallery on news is the same as the id_gallery on images : 
    JOIN news on image.id_gallery = news.id_gallery 
e) But not all news, only ceratain news: WHERE news.id_news > 100 (Could use other criteria) 

All together 
SELECT images.id_image, images.id_gallery 
FROM images 
JOIN news on image.id_gallery = news.id_gallery 
WHERE news.id_news > 100 

Another way to do it (implicit join) is: 
    SELECT images.id_image, images.id_gallery 
FROM images,news 
WHERE (image.id_gallery = news.id_gallery) AND (news.id_news > 100) 
0

Если вы хотите выбрать строки из одной таблицы на основе столбца в другом, вам необходимо использовать соединение.

Так что давайте просто скажем, что вы пытаетесь выбрать все изображения, связанные с существующими новостями.

select * 
from images i inner join news n on i.id_gallery = n.id_gallery 

Это вернет все столбцы на всех строках, где изображение может быть связано с новостями.

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