2013-06-15 4 views
0

Я дублировал свои данные так, как указано звездочкой * ниже в Snippet 1. Такое дублирование позволило мне запустить простой запрос, как, например:Сочетание данных из 2 таблиц?

"SELECT * FROM tweets ORDER BY time DESC LIMIT 7", 

Это заполнит 7 твитов в качестве настройки по умолчанию.

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

Как мне выполнить сложный запрос? Это возможно? Это хорошая идея?

Отрывок 1

Table 1 - tweets (7) 

id 
h_token 
h_file *remove and pull from credentials 
picture *remove and pull from credentials  
name  *remove and pull from credentials 
tweet 
time 



Table 2 - credentials (12) 


id 
name 
email 
h_pass 
picture 
privacy 
h_token 
h_file 
special 
page 
pane 
remember 

Каждый твит имеет h_token, связанный с ним, который будет использоваться для добавления реляционных данных (h_file, имя и изображение)

ответ

2

Вы должны использовать операцию соединения , так:

SELECT tweets.*, credentials.h_file, credentials.picture, credentials.name 
    FROM tweets JOIN credentials ON tweets.h_token=credentials.h_token 
    ORDER BY time DESC LIMIT 7; 

Это в основном ваш исходный запрос, но добавление трех столбцов из таблицы учетных данных всякий раз, когда h_token из таблицы учетных данных и твитов соответствует ......

+0

Определенно. Это преимущество или реляционная база данных. Таким образом, если вы обновите строку в учетных данных, вам не нужно обновлять большое количество строк или строк в твитах. –

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