2014-11-18 3 views
1

У меня есть 2 таблицы, а внешний ключ - «timesection_id». Первый стол: разломыMySQL left join, после создания многомерного массива


| id | имя | время | позиция |


Вторая таблица содержания


| id | название | short_desc | desc | img | позиция | timesection_id |

Я хотел бы создать левое соединение с первой таблицей. Он должен быть по порядку. Результат должен быть похож, что:

array (size=1) 
    'content' => 
    array (size=2) 
     1 => 
     array (size=3) 
      'time' => string '12-00' (length=5) 
      'name' => string 'Start' (length=21) 
      'performer' => 
      array (size=3) 
        0=> 
         'title' => string '12-00' 
         'desc' => string 'etc etc' 
         'shor_desc' => string 'etc etc' 
         'img' => string '1.jpg' 
        1=> 
         'title' => string '12-00' 
         'desc' => string 'etc etc' 
         'shor_desc' => string 'etc etc' 
         'img' => string '1.jpg' 
     2 => 
     array (size=3) 
      'time' => string '13-00' (length=5) 
      'name' => string 'Something' (length=24) 
      'performer' => 
      array (size=3) 
        0=> 
         'title' => string '12-00' 
         'desc' => string 'etc etc' 
         'shor_desc' => string 'etc etc' 
         'img' => string '1.jpg' 
        1=> 
         'title' => string '12-00' 
         'desc' => string 'etc etc' 
         'shor_desc' => string 'etc etc' 
         'img' => string '1.jpg' 

My SQL:

SELECT * FROM timesection 
    LEFT OUTER JOIN content ON timesection_id = timesection.id 
    ORDER BY timesection.position ASC 

И я иметь этот результат:

0 => 
    array (size=9) 
     'id' => null 
     'name' => string 'KezdĂŠs' (length=7) 
     'time' => string '11:00' (length=5) 
     'position' => null 
     'title' => null 
     'short_desc' => null 
     'desc' => null 
     'img' => null 
     'timesection_id' => null 
    1 => 
    array (size=9) 
     'id' => string '1' (length=1) 
     'name' => string 'KezdĂŠs, Sikerdal debĂźtĂĄlĂĄsa' (length=31) 
     'time' => string '12:00-14.00' (length=11) 
     'position' => string '1' (length=1) 
     'title' => string 'Ăv Embere orvoscsoport' (length=23) 
     'short_desc' => string '' (length=0) 
     'desc' => string 'PĂŠldĂĄtlan ĂśsszefogĂĄs eredmĂŠnyekĂŠnt egĂŠszsĂŠges gyermeket szĂźlt ĂŠs nĂŠgy ĂŠletet mentett meg egy tĂśbb hĂłnapja agyhalott asszony Debrecenben' (length=149) 
     'img' => string '1.jpg' (length=5) 
     'timesection_id' => string '2' (length=1) 
    2 => 
    array (size=9) 
     'id' => string '2' (length=1) 
     'name' => string 'KezdĂŠs, Sikerdal debĂźtĂĄlĂĄsa' (length=31) 
     'time' => string '12:00-14.00' (length=11) 
     'position' => string '2' (length=1) 
     'title' => string 'Varga RĂłbert' (length=13) 
     'short_desc' => string '' (length=0) 
     'desc' => string 'Varga RĂłbertVarga RĂłbertVarga RĂłbertVarga RĂłbertVarga RĂłbertVarga RĂłbertVarga RĂłbertVarga RĂłbertVarga RĂłbertVarga RĂłbertVarga RĂłbertVarga RĂłbert' (length=156) 
     'img' => string '1.jpg' (length=5) 
     'timesection_id' => string '2' (length=1) 
    3 => 
    array (size=9) 
     'id' => string '3' (length=1) 
     'name' => string 'KezdĂŠs, Sikerdal debĂźtĂĄlĂĄsa' (length=31) 
     'time' => string '12:00-14.00' (length=11) 
     'position' => string '3' (length=1) 
     'title' => string 'BenkĹ Vilmos ĂŠs fiatal tehetsĂŠgek' (length=36) 
     'short_desc' => string '' (length=0) 
     'desc' => string 'BenkĹ Vilmos ĂŠs fiatal tehetsĂŠgekBenkĹ Vilmos ĂŠs fiatal tehetsĂŠgekBenkĹ Vilmos ĂŠs fiatal tehetsĂŠgekBenkĹ Vilmos ĂŠs fiatal tehetsĂŠgekBenkĹ Vilmos ĂŠs fiatal tehetsĂŠgekBenkĹ Vilmos ĂŠs fiatal tehetsĂŠgekBenkĹ Vilmos ĂŠs fiatal tehetsĂŠgekBenkĹ Vilmos ĂŠs fiatal tehetsĂŠgekBenkĹ Vilmos ĂŠs fiatal tehetsĂŠgekBenkĹ Vilmos ĂŠs fiatal tehetsĂŠgekBenkĹ Vilmos ĂŠs fiatal tehetsĂŠgek' (length=396) 
     'img' => string '1.jpg' (length=5) 
     'timesection_id' => string '2' (length=1) 

Если основная таблица имеет больше записей из субтаблица я бы как создать значение исполнителя и поместить его в дополнительный массив. Значение выполнения может быть нулевым.

+0

точно, что ваши ожидания? И SQL-запрос или PHP-код для него? Разница заключается в том, что код, который вы опубликовали, выглядит как какая-то конфигурация sql для некоторой структуры, но совершенно непонятно, что правильно. Не могли бы вы обновить свой вопрос чуть подробнее? – Digitalis

+0

Код SQL или PHP полезен для меня. Я редактировал вопрос. Спасибо Digitalis –

ответ

2

SQL запросов:

SELECT timesection.id,timesection.name,timesection.time, 
    content.title,content.short_desc,content.desc,content.img,content.id as cid 
    FROM timesection 
    LEFT JOIN content ON content.timesection_id = timesection.id 
    ORDER BY timesection.position , content.position 

PHP КОД: (примечание: используя старые устаревшее mysql_ * функции, рассмотреть возможность использования MySQLi или PDO вместо)

$r = mysql_query($query); 
$array = array('content'=>array()); 
$i=0; 
$lastid = null; 
while($row=mysql_fetch_object($r)) 
{ 
if($lastid!==$row->id) 
{ 
    $array['content'][++$i]=array('time'=>$row->time,'name'=>$row->name,'performer'=>array()); 
    $lastid=$row->id; 
} 
if($row->cid!==null) 
{ 
    $array['content'][$i]['performer'][]=array('title'=>$row->title,'short_desc'=>$row->short_desc,'desc'=>$row->desc,'img'=>$row->img); 
} 
} 
+0

TY комментарий! У меня есть это сообщение об ошибке: Неустранимая ошибка: вызов неопределенной функции fetch_object() в пути \ showContent.php в строке 1 –

+0

Извините, моя ошибка. Мне просто нужно написать mysql_fetch_object, и все в порядке. Тай снова. –