2013-08-30 5 views
-2

Я пытаюсь получить доступ к базе данных MySQL с помощью PHP. Мне нужно получить 6 значений из моей таблицы actor_id, отображая их в таблице html. Моя инструкция SELECT:php mysql выбрать несколько значений из одной таблицы

SELECT actor_id.actor_name, FROM actor_id WHERE movie.star1 = actor_id.actor_id; 

Теперь, как добавить еще один фильм.star2, movie.star3 и т. Д.?

DB Структура

NAME - поля кино - movie_id название Star1 star2 actor_id - actor_id ACTOR_NAME

+2

Пожалуйста, укажите структуру своей базы данных. У вас действительно есть таблица под названием actor_id? И поскольку вы не присоединяетесь ни к чему, как вы можете использовать movie.star1? Это должно вызвать синтаксическую ошибку. –

+1

Неправильный синтаксис SELECT –

+0

Запятые, запятые, а у вас действительно есть таблица под названием something_id? Я думаю, что пришло время вернуться к [My] SQL 101 – Strawberry

ответ

0

Используйте или заявление. я не знаю вашей структуры БД, но должно выглядеть это с или:

SELECT actor_id.actor_name, 
FROM actor_id 
WHERE (movie.star1 = actor_id.actor_id or movie.star2 = actor_id.actor_id); 
+0

Что такое фильм здесь? –

+1

Кто сохранил этот ответ? – undone

2

Взглядами это, вы на самом деле с помощью двух таблиц здесь. Однако ваш запрос ссылается только на один из них.

Я думаю, что вам нужно что-то вроде этого:

SELECT 
    actor_id.actor_name, 
FROM 
    actor_id 
     join movie 
      on movie.star1 = actor_id.actor_id 
      or movie.star2 = actor_id.actor_id 
      or movie.star3 = actor_id.actor_id 
      -- etc etc 

На этой ноте, хотя, вы, вероятно, сделать действительно хорошо read this lengthy Q&A that I wrote объяснить эти вещи в гораздо более подробно.

+0

Разве не было бы смысла вступать в actor_id в 'movie', так как выбрана строка' actor_id', зависит от того, какие значения используются в 'movie.star1'? –

+0

@EliasVanOotegem Вполне возможно, я угадываю структуру таблицы, хотя и пытаюсь использовать входные данные в вопросе :) – Fluffeh

+0

Конечно, информации недостаточно, чтобы дать окончательный ответ. Я прочитал вопрос во второй раз ... Я добавил пример подзапроса к моему ответу, потому что (на основе информации, предоставленной OP), которая может быть и тем, что он ищет, тоже ... –

0
SELECT actor_id.actor_name 
FROM actor_id WHERE actor_id.actor_id in [specify the values like movie.star2, movie.star3... etc]; 

Но не может использовать запятую перед FROM ..

1

Как я уже сказал в своем комментарии, это довольно легко (если вы read the manual):

SELECT field1, field2, field3 AS altName, lastFieldNoCommaHere 
    FROM table 
WHERE someField = 'value' 
    AND id IN (1,2,3,4,5,6,7,8,9) 
    AND (dateField > NOW() 
     OR dateField IS NULL); 

RTM и не использовать mysql_* расширение, устарело. Используйте PDO или mysqli_*, а не только из-за проблемы с отменой, But for various reasons.

Seing, как вы используете movie.star1 в вашем где предложение, вы должны смотреть в the JOIN syntax тоже:

SELECT actor_id.name 
FROM actor_id 
    LEFT JOIN movie 
     ON movie.star1 = actor_id.actor_id 
WHERE actor_id.actor_id IN (1,2,4,5,6,7,8,123); 

Это, вероятно, что вы после этого, или, возможно:

SELECT actor_id.name 
FROM actor_id 
WHERE actor_id.actor_id 
      IN (SELECT movie.star1 
        FROM movie 
        WHERE movie.release_date >= '2012-01-01'); 

Это пример подзапроса. Будьте осторожны с этим, потому что это часто довольно медленный ...
И как Fluffeh указал мне, вы не можете выбрать несколько значений, и придется прибегнуть к чему-то вроде этого:

SELECT actor_id.name 
FROM actor_id 
WHERE actor_id.actor_id 
      IN (SELECT IFNULL(movie.star1, IFNULL(movie.star2, movie.star3)) 
        FROM movie 
        WHERE movie.release_date >= '2012-01-01'); 

Или:

SELECT actor_id.name 
FROM actor_id 
WHERE actor_id.actor_id 
      IN (SELECT IF (movie.star1 <= 12, 
          IF (movie.star2 <= 15, 
           movie.star3, 
           movie.star2), 
          movie.star1) 
        FROM movie 
        WHERE movie.release_date >= '2012-01-01'); 
+0

Вы не можете использовать несколько столбцов в подзапросе 'in (select ...)'. – Fluffeh

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