ugrás a tartalomhoz

listán belül azonos elemek megjelölése

worklie · 2013. Dec. 17. (K), 12.36
Sziasztok új vagyok a oldalon, ezért ha értetlenül írnám elnézést.
Ez végül is PHP+adatbázis kezelés

Adott egy lista while-al kilistázok pár adatot egy táblázatba.
Kellene nekem egy olyan megoldás vagy segítség benne, hogy pl:
id nev sorozatszam kor
1 Valaki1 100111 13 *
2 Valaki2 100111 55 *
3 Valaki3 333333 44
4 Valaki4 444444 44
5 Valaki5 555555 19 *
6 Valaki5 555555 22 *
van ez a kis lista ha a sorozatszámból 2 vagy annál több van akkor azt jelölje pl. egy csillaggal egy új oszlopba vagy legyen más színű ez mindegy.
Csak az érdekelne hogy tudnék ehhez hasonlót vagy ezt megvalósítani?
Köszönöm előre a választ.
 
1

Ahol peldany != 1, ott több

kuka · 2013. Dec. 17. (K), 12.49
Ahol peldany != 1, ott több van, azaz jöhet a csillag vagy az elütő szín:

select
*,
count(*) over (partition by sorozatszam) peldany

from tiedtabla
Ui: Ugyanolyan adatbázist használsz mint én, úgy-e?
2

oracle?

razielanarki · 2013. Dec. 17. (K), 16.12
nem hiszem :)

legegyszerűbb, ha a while ciklusodban egy tömbbe írod azokat az értékeket, amik már voltak, és a jelzés kirakásánál meg ez alapján ellenörzöd (benne van-e a tömbbe-már az érték?), h kell-e jelölés vagy sem.

pl:

$marvoltak = array ();

while ($ciklus)
{
   // ...

   if (in_array ($ertek, $marvoltak))
   {
       // már volt: csillag stb
   }
   else
   {
      // nem volt: nem kell csillag, de eltároljuk
      $marvoltak[] = $ertek;
   }
}

3

oracle?Nemcsak. PostgreSQL és

kuka · 2013. Dec. 17. (K), 16.33
oracle?
Nemcsak. PostgreSQL és MSSQL is.

benne van-e a tömbbe-már az érték?
Biztos, hogy ezzel az optimalizált kigyűjtéssel az első példányok (a példában az 1. és 5.) is megkapják a jelölést?

Ha nincs analitikai függvény támogatás, én akkor is inkább SQL-ben rendezném le a dolgot:

select
t.*,
foo.peldany

from tiedtabla t
inner join (
  select
  sorozatszam,
  count(*) peldany

  from tiedtabla

  group by sorozatszam
) foo on foo.sorozatszam = t.sorozatszam
4

azért nem cutting-edge

razielanarki · 2013. Dec. 17. (K), 23.19
a válasz mert a kérdés feltevésből az jött le, hogy ennyi elég lesz neki, valszeg nem nagy terheltségű és/vagy többmilliós látogatóju oldalt fejleszt, hanem az alapokkal barátkozik éppen :)
5

Alapok

Pepita · 2013. Dec. 17. (K), 23.30
Hogy érted azt, hogy
ha a sorozatszámból 2 vagy annál több van

Ha a "sorozatszám" egy táblában egy oszlop, akkor annak egyetlen értéke lehet. Ez lehet szöveges, és pl. szóközökkel választod el a számokat, de pont ilyen esetekben érdemes egy résztáblát csinálni: az eredeti táblában nincsen "sorozatszám" oszlop, és csinálsz még egy, mondjuk "sorozatok" nevű táblát, "u_id" és "sorozatszám" oszlopokkal.

Ekkor a JOIN valamelyike "lesz a te embered" lekérdezéskor, mindjárt könnyebb lesz darabszámokat is figyelni, ill. egyáltalán van-e neki sorozatszáma, stb.

Nem kell megijedni adatbázisoknál, ha újabb táblára van szükség. Azt hiszem, neked érdemes volt innen kezdenem a probléma megoldását, ha nem, majd jelzed gondolom.
6

mysql

worklie · 2013. Dec. 18. (Sze), 09.49
Sziasztok mysql-t használok. Köszönöm az eddigi válaszokat.
De pontosítok
1 Valaki1 100111 13 *
2 Valaki2 100111 55 *
3 Valaki3 333333 44
4 Valaki4 444444 44
5 Valaki5 555555 19 *
6 Valaki5 555555 22 *
Form kitöltése után jönnek be az adatok.
ezeket az értékeket nem ismerem előre úgy kéne megoldani.
Egy táblám van sql-be azon belül kéne megkeresni melyik egyezik, melyik nem, ez eddig oké, külön listába ki is tudom iratni őket lekérdezéssel(hogy csak azok legyenek amik legalább kétszer szerepelnek), de van egy főlista és ott be kéne jelölni amik már szerepelnek egyszer már egy másik sorban a sorszam oszlopban. Úgy mint pl. a példában.
Persze úgy is megoldhatnám, hogy ha már létezik a sorszám ne fusson le a form, de érdekel azért hogy lehet megoldani, ha már belefogtam ebbe.
7

Hűha,

Pepita · 2013. Dec. 19. (Cs), 00.12
lehet, hogy csak én nem vagyok toppon, de most kevésbé értem a problémát, mint pontosítás előtt...