2013-09-09 4 views
1

У меня есть две таблицы ...Регистрация ID & Имя из двух отдельных таблиц

Table 1 (keywordsTbl) 
KeyID    Key_Name 
================================ 
1     Biology 
2     Entertainment 

Table 2 (profileTbl) 
Keyword_ID   Key_Name 
================================ 
1(from keywordsTbl) Biology(from keywordsTbl) 
2(from keywordsTbl) Entertainment(from keywordsTbl) 

Мой запрос в profileTbl индексирует KeyId из keywordsTbl и его рабочей штрафа. Единственная проблема заключается в том, что мой вывод отображается так (без массива). :

enter image description here

Похоже, его индексацию только первый KeyId ... Результаты показывают только 1 одно ключевое слово, даже если есть более чем один KeyId помещаются в строке:

enter image description here

Мой запрос выглядит так:

include 'db.php'; 

    $sql = mysqli_query($con,"SELECT * FROM profileTable, addKeywordTable ORDER BY LaName ASC"); 


while ($row = mysqli_fetch_array($sql)) 
{ 

    $fname = $row['FirName']; 
    $lname = $row['LaName']; 
    $title = $row['Title']; 
    $keys = $row['Keyword_Name']; 
    $id = $row['source_ID']; 

if(!in_array($title,array('',null)) && !empty($title)): 
$title = '('.$title.')'; 
else: 
$title = ''; 
endif; 

Что это самый простой способ, чтобы показать массив, когда две таблицы быть использованным? Будет ли соединение работать лучше в этом случае?

+1

Я не могу сделать головы или хвосты того, что ваша база данных * на самом деле * выглядит, но я * могу * сказать вам, что '[" 17 "," 18 "," 40 "]' не является массивом как и MySQL, это строка. Если вы можете опубликовать 'SHOW CREATE' для задействованных таблиц, это прояснит ситуацию. – Sammitch

+0

Согласен - я не думал, что ваш 'внешний ключ' был сохранен в строке *« array »* внутри столбца Keyword_ID - это выбор, который вы делаете, и если да, можете ли вы отменить это в пользу правильной реляционной подход? – Matthew

+0

Вы написали в комментарии: Я не получаю ошибку. Вместо этого я получаю keyID, а не Keyword_Name ... это моя проблема! ::: Если вы дадите свой '$ row ['Keyword_Name'];' неправильное имя это нормально. Должно быть '$ keys = $ row ['Key_Name'];' –

ответ

0

Я не 100% уверен, что это то, что вы просите, но если вы хотите получить список результатов, основанных на присоединиться к KeyID вы можете сделать что-то вроде этого:

SELECT p.Laname, p.FiName, GROUP_CONCAT(k.Key_Name) 
FROM ProfileTable AS p 
JOIN addKeywordTable AS k ON k.KeyID = p.Keyword_ID 
GROUP BY p.LaName, p.FiName 

Если вы хотите укажите больше файлов в списке выбора, которые необходимо добавить в список GROUP BY, или используйте функцию агрегации (GROUP_CONCAT, MAX, MIN и т. д.) на них в списке выбора.

+0

это очень близко, но не может заставить его работать с моими двумя таблицами ... – MizAkita

+0

Опубликовать то, что вы делаете, и какова ваша ошибка? Не комментарии по вашему вопросу - это ключевой_имя_вой список строк из ID? – Matthew

+0

@Matthew ... я не получаю ошибку. Вместо этого я получаю keyID, а не Keyword_Name ... это моя проблема! – MizAkita