Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: column default
Forum PHP.pl > Forum > Bazy danych
ShaggyAG
Witam,

Czy jest możliwość tak ustawić wartość default aby była ona równa innej komórce tego samego wiersza(id)?

Pozdrawiam
mmmmmmm
Skoro ma być równa, to po co powielać wartość?
W DEFAULT nie da się tego zrobić - pozostaje TRIGGER.
ShaggyAG
hmm to nie dobrze.
Może w takim razie ktoś coś poradzi..
Robie sobie prosty system komentarzy dwu poziomowych (możliwość odpowiedzi na jakiś komentarz).
Zrobiłem sobie taką tabele

---------------------------------------------------------------------------------
| id | profil_id | author_id | author_name | re_id | msg | added |
---------------------------------------------------------------------------------
| int | int | id | varchar | int | text | timestamp |


I miało to działać tak ze jak komentarz jest dodany bezpośrednio do profilu to re_id = jego id
a jak jest odpowiedzią do jakiegoś komentarza to re_id było id komentarza do którego odnosi się odpowiedź.
I żeby się to ładnie wyświetlało (posortowane po dacie i odpowiedzi pod komentarzami do których są dodane)
chciałem użyć sql SELECT * FROM profile_coment WHERE profil_id=:id ORDER BY re_id ASC, added ASC'

I teraz mam problem bo ni jak nie wiem jak to ładnie posortować żeby było cacy ;/
Pyton_000
jeżeli re_id to ID wiadomości na którą jest odpowiedzią, to dla nowej wiadomości ustaw NULL, bo ihmo nie powinna wskazywać na samą siebie bo nie jest odpowiedzią samą w sobie wink.gif

co do sortowania to nie rozumiem wink.gif Generalnie posortowanie po dacie powinno wystarczyć.
ShaggyAG
Tak taż zrobiłem smile.gif
Co do sortowania to samo sortowanie po dacie nie wystarczyło.
Bo jak mam trzy komentarze:
1: 'ładna sukienka' z 12-02-2015 10:00
2: 'Cena do negocjacji?' z 12-02-2015 11:00
3: 'mi sie nie podoba' z 12:02-2015 12:00 - odpowiedz do pierwszego komentarza!

To jak je pobiore po dacie to beda w kolejnosci
1 2 3 a docelowo trzeba mi 1 3 2
Poradziłem sobie tak:
  1. $coments = $db->prepare('SELECT * FROM profile_coment WHERE profil_id=:id ORDER BY added');
  2. $coments->bindValue(":id", $id, PDO::PARAM_INT);
  3. $coments->execute();
  4. if($coments->rowCount() == 0)
  5. {
  6. echo '<p>Aktualnie brak komentarzy.</p>';
  7. } else
  8. {
  9. $all= $coments->fetchAll(PDO::FETCH_ASSOC);
  10.  
  11. $toEcho = [];
  12.  
  13. foreach($all as $com)
  14. {
  15. if(is_null($com['re_id']))
  16. {
  17. $toEcho[$com['id']] = '<div class="coment">'.print_r($com, true).'<div onclick="answer(this);">Odpowiedz</div></div>';
  18. } else
  19. {
  20. $toEcho[$com['re_id']] .= '<div class="coment_re">'.print_r($com, true).'<div onclick="answer(this);">Odpowiedz</div></div>';
  21. }
  22. }
  23. foreach ($toEcho as $single)
  24. {
  25. echo($single);
  26. }
  27. }

(wersja do testów)
Ale średnio mi się podoba jakość takiego rozwiązania...
Pyton_000
a posortowanie
ORDER BY re_id, added
questionmark.gif

To powinno załatwić sprawę.
ShaggyAG
działałoby gdyby re_id komentarza, który nie jest odpowiedzią było równe jego id a nie null.
Jak jest null to zawraca 123
mmmmmmm
ORDER BY Coalesce(re_id, id), added
ShaggyAG
Dziękuje smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.