Avatar billede truthorn Nybegynder
05. juni 2002 - 12:20 Der er 14 kommentarer og
1 løsning

find kolonnenavn

Jeg har et problem jeg ofte løber ind i.....jeg vil lige starte med at eksemplificere det.

Hvis man f.eks. har en adressebog, hvor hver række repræsenterer id (som fremmednøgle) og kolonnerne f.eks. udgjorde en række forskellige job....

dvs.

Rækker:          postmand arbejder forsker, etc..
personer_id(1)    1        1        0
personer_id(2)    0        0        0
personer_id(3)    1        1        1
personer_id(4)    0        0        1

Hvis der står "0", så er vedkommende det ikke, hvis der står "1", så er vedkommende dette.

Jeg har id-nummeret, og jeg vil herefter gerne komme ud med job-typerne....

(jeg bruger php, så du må gerne svare i PHP-sprog) - ellers bare selve SQL-metoden ville være meget fin :)

Håber, at dette er forklaring nok.
Avatar billede Slettet bruger
05. juni 2002 - 12:27 #1
Jeg har ikke styr på php, men kan du ikke ved hjælp af MyphpAdmin finde det du skal bruge ?
Avatar billede lauer Nybegynder
05. juni 2002 - 12:33 #2
jeg tror at jeg vil vælge at kører den anden vej.

Hvem er postmand:
"SELECT personer_id FROM tabel WHERE postmand = 1"
Avatar billede mjl Nybegynder
05. juni 2002 - 12:40 #3
Ved ikke om dette kan bruges til noget - men her:

<?
$res = mysql_query("SELECT * FROM din_tabel");
while($get_res = mysql_fetch_array($res)) {
if ($get_res["postmand"]=='1'){
echo $get_res["postmand"];
}
}
?>
Avatar billede mjl Nybegynder
05. juni 2002 - 12:40 #4
eller:

<?
$res = mysql_query("SELECT * FROM din_tabel");
while($get_res = mysql_fetch_array($res)) {
if ($get_res["postmand"]=='1'){
echo "Jep - Han er postmand";
}
}
?>
Avatar billede truthorn Nybegynder
05. juni 2002 - 12:42 #5
Problemet er, at det er OK, hvis kolonnerne er statiske, dvs. ikke ændrer navn - eller der kommer flere til - men jeg vil gerne have det dynamisk, så jeg ikke skal lave dobbeltarbejde.......
Avatar billede truthorn Nybegynder
05. juni 2002 - 12:44 #6
Men kan man gå "den anden vej" - og køre en whileløkke for hver kolonne (eller for-løkke - whatever) - og hver gang den støder på resultatet "1", så svarer den tilbage med kolonnenavnet?
Det ville jo sådan set være optimalt......
Avatar billede mjl Nybegynder
05. juni 2002 - 13:00 #7
Måske skal du ud i noget med:

"SELECT * FROM din_tabel WHERE EXISTS ('1')"
Avatar billede fri-hash Nybegynder
05. juni 2002 - 13:01 #8
hvis du er i startfasen af projektet, så kunne du lave tabellerne om
-en med personer
-en med jobs ( en idkolonne og en stillingsbetegnelsekolonne )
-en samlet med personid og stillingsid

og så

SELECT personer.*, jobs.stillingbetegnelse FROM personer, jobs, samlet WHERE personer.id=[DIT ID] AND (personer.id=samlet.personid AND samlet.personid=job.personid)

er ikke testet, men noget lignende skulle virke
og når der kommer nye jobs, opretter du bare en ny række i jobstabellenog du kan søge personer med bestemt job eller jobs på bestemt person
Avatar billede fri-hash Nybegynder
05. juni 2002 - 13:02 #9
SQL'en er vist noget sludder

tror
SELECT personer.*, jobs.stillingbetegnelse FROM personer, jobs, samlet WHERE personer.id=[DIT ID] AND (personer.id=samlet.personid AND samlet.stillingsid=job.id)
Avatar billede mjl Nybegynder
05. juni 2002 - 13:08 #10
fri-hash (og vindmøller) har ret i, at man nogen gange gør det lidt for besværligt for sig selv. Du kunne måske også lave en eller anden PHP-fætter, der først fastslår hvilke kollonner der findes, og derefter hvilke der er = 1
Avatar billede mjl Nybegynder
05. juni 2002 - 15:13 #11
Kom du videre eller hvad? :o)
Avatar billede hansk Nybegynder
12. juni 2002 - 22:40 #12
Prøv at lave det lidt anderledes:

Tabel Person
PersonID
PersonNavn
...

Tabel Job
JobID
JobNavn
...

Tabel Ansættelse
PersonID
JobID

Så er det så dynamisk det kan blive, og iøvrigt normaliseret.

Så kan der selektes som flg:

SELECT PersonNavn, JobNavn FROM Person, Job, Ansættelse
WHERE Ansættelse.PersonID=Person.PersonID
AND Ansættelse.JobID=Job.JobID

Din SQL vil altid fungere, også når du propper 1000 jobs og 1000 personer ind i databasen.
Avatar billede fri-hash Nybegynder
12. juni 2002 - 23:27 #13
hansk >> alt ialt en gentagelse af mit forslag, blot med en lidt anden select-statement
Avatar billede mjl Nybegynder
22. juni 2002 - 22:40 #14
Tra la la - og falderah...er du gået i seng eller hva?????
Avatar billede lubker Nybegynder
20. september 2003 - 20:20 #15
Jeg fandt en funktion på php.net, som gav svar på dit spørgsmål.

$res = mysql_query("SELECT id, col1, col2, col3 FROM ansvar ORDER BY plac");

echo mysql_field_name($res, $int);

$int => kolonnenummeret.

Håber du kan bruge det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester