2016-11-17 6 views
1

У меня есть две несвязанные таблицы в базе данных MYSQL. Я хочу выбрать и отобразить данные из обоих.Как я могу отображать данные из двух несвязанных таблиц?

В качестве примера, таблицы выглядит следующим образом: separate tables

Я хотел бы, чтобы отобразить результаты на моем сайте, который был организован в алфавитном порядке, как это: results table

Идентификатор из каждой таблицы используется для обозначения фотографии кошки или собаки. Мне не повезло с заявлениями JOIN, будет ли UNION работать в этом сценарии?

Любая помощь очень ценится.

+0

Вам понадобится 'join'. Измените свой вопрос и добавьте заявление 'join', которое вы попробовали. – randominstanceOfLivingThing

+1

@randominstanceOfLivingThing Здесь нет ничего связанного. –

+2

@ randominstanceOfLivingThing Как вы можете присоединиться к несвязанным таблицам? –

ответ

3
SELECT Alpha, Name, CONVERT(Cat_Id, CHAR(50)) AS Cat_Id, '' AS Dog_Id 
FROM Cat 
UNION ALL 
SELECT Alpha, Name, '' AS Cat_Id, CONVERT(Dog_Id, CHAR(50)) AS Dog_Id 
FROM Dog 
ORDER BY Alpha 

Несколько комментариев:

Строго говоря, если мы хотим показать пустую строку для отсутствующих кошки или собаки удостоверения личности, то мы должны отливать Cat_Id или Dog_Id столбцы CHAR, потому что все значения в столбце должны быть одного типа.

Не нужно обернуть UNION запрос использовать ORDER BY и сортировку по Alpha столбцам, а мы можем просто добавить ORDER BY до конца.

+0

Это сработало хорошо. Поскольку в обеих таблицах есть другие столбцы, я использовал UNION вместо UNION ALL. Я не знал о том, чтобы отличать такие ценности, большое спасибо. – sol

+1

@ovokuro Я считаю, что в MySQL вы можете уйти без актерского состава. Но другие более строгие базы данных, такие как SQL Server, могут не позволить этого, так что это хорошая привычка иметь. –

+2

Как Тим Бигелейсен заявил, что это хорошая привычка использовать литые. @ovokuro, если вы используете UNION ALL, вы разрешите mysql пропустить сравнение для двух наборов для уникальности. Союз удаляет повторяющиеся строки. В этом случае UNION All улучшит производительность в долгосрочной перспективе, когда данные будут увеличиваться. –

2
SELECT Alpha,Name,Cat_ID,'' as Dog_ID 
FROM Cat 
UNION ALL 
SELECT Alpha,Name,'' as Cat_ID,Dog_ID 
FROM Dog 
1

Я бы объединить две таблицы в одну таблицу, используя поля:

ID Type Name Alpha 

Поле типа будет либо кошка или собака, то все остальное будет заполнить, как вы есть. Это также позволяет вам добавлять дополнительные типы животных в будущем без необходимости изменять вашу базу данных. Тогда это простой выбор при отображении ваших данных.

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