Как выбрать один столбец из 3 таблиц

#php #mysql #sql

#php #mysql #sql

Вопрос:

Я хочу выбрать один и тот же столбец из 3 таблиц и получить строки из этого одного столбца.

Вот код:

 mysql_query("SELECT * from tv,movies WHERE hash='123'");
  

Итак, теперь я хочу, чтобы столбец с именем hash из телевизора и фильмов выдавал результат по хэш-номеру.


У меня нет одинакового количества столбцов на телевидении и в фильмах.

Убедитесь, что хэш не существует в tv, затем перейдите к movies.

Комментарии:

1. Какой язык вы используете? Это PHP? Вероятно, вам следует пометить этот вопрос хотя бы тегами sql и php.

2. @Occulta да mysql_query , это функция PHP, я переназначил вопрос правильно.

3. я использую php с mysql

Ответ №1:

Сделайте это одной таблицей с category полем в ней.

это единственный правильный способ проектирования базы данных.

Ответ №2:

 SELECT fieldName1 FROM table1 WHERE hash='123'
 UNION
SELECT fieldName1 FROM table2 WHERE hash='123'
 UNION
SELECT fieldName1 FROM table3 WHERE hash='123';
  

Комментарии:

1. но у меня нет одинакового количества столбцов как на телевидении, так и в фильмах

2. @Ahmed Jalal: вы сказали: «Я хочу выбрать один и тот же столбец», и этот код SQL действительно выбирает один столбец, почему важно, есть ли у вас одинаковое количество столбцов в обоих tv и movies ?

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

4. как мы выбираем либо из телевизора, либо из фильмов, например, если хэш существует в tv, продолжайте, а если нет, переходите к фильмам

Ответ №3:

Вы должны выбрать равное количество столбцов в обеих таблицах

 SELECT tvcol1 as field1,tvcol2 as field2 from tv WHERE hash='123' 
UNION 
SELECT moviescol1 as field1,moviescol2 as field2  from movies WHERE hash='123'
  

Ответ №4:

Читая между строк и основываясь на ваших комментариях к ответу @Bryan, вам нужны все столбцы из tv таблицы, но если он не найден, выберите все столбцы из movies таблицы. В этом случае используйте два разных запроса:

 $result = mysql_query("SELECT * FROM tv WHERE hash = '123'") or die( mysql_error() );

if( mysql_num_rows( $result ) == 0 ) {
    $result = mysql_query("SELECT * FROM movies WHERE hash = '123'") or die( mysql_error() );
}
  

Теперь $result имеет столбцы из tv movies таблицы or или, или false , если хэш не был найден ни в одной из них.