Bir tabloya php liste

2 Cevap php

Ben bir question yesterday sordu ve ben aldığım cevap benim sorunun ilk bölümünü yanıtladı - Ben şimdi buna benzer bir liste oluşturan bir sorgu var:

fname, sname, uname, assignment, task, grade
joe, blogs, joe.blogs, 1, 1, 52
joe, blogs, joe.blogs, 1, 2, 58
jim, blogs, jim.blogs, 1, 1, 95
jim, blogs, jim.blogs, 1, 2, 86
amy, blogs, amy.blogs, 1, 1, NULL
amy, blogs, amy.blogs, 1, 2, 76

bir benzeri. Bu listeden en son notu alır ve hala bir öğrenci görev için bir not almadı nerede çalışır.

Ne yanındaki istiyorum şuna benzer bir tablo üretmek için:

      | Assignment 1    | Assignment 2    |
 Name |-----------------|-----------------|
      | Task 1 | Task 2 | Task 1 | Task 2 |
===========================================
Joe.. |  52    |  58    |  ..    |  ..    |
Jim.. |  95    |  86    |  ..    |  ..    |
Amy.. |  U     |  76    |  ..    |  ..    |
...

yine, ben daha önce de benzer şeyler yaptım, ama onlar korkunç verimsiz olduğunu biliyorum - İdeal dizinin tek bir seferde bu tabloyu üretmek mümkün olmak istiyorum.

Teşekkürler.

2 Cevap

Ne yapmak için ihtiyacımız olacak size satırları yineleme yaparken sütun ekleyin. Bu sütunları seçerek, önce küçük bir sorguyu yürütmek için verimli olabilir:

SELECT
  *
FROM assignment_tasks
ORDER BY
  Assignment_ID ASC,
  Task_ID ASC;

Then adapt the query loading the array you described to order by user, assignment, task. This way, the values in the array are in the same order as in the table (row by row, left to right). If a value is missing (or NULL, doesn't matter), print U.

Tabii ki, bu ödevlerin sayısı dizideki girişlerin sayısına göre küçük olduğu varsayımı ile gider.

group by fıkrasında bir göz atın. Ben hala istediğim gibi iç içe bir dizi oluşturmak için ayarlanmış sonuçlar üzerinde foreach ing kadar bitirmek zorunda olduğunu bulmak çünkü ben şahsen bunu kullanmıyorum - ama aradığınız şey olabilir. İşte link that uses sums yani ideal değil, ama size SQL üzerinde biraz daha fazla bilgi gösterir.