26. oktober 2004 - 10:41Der er
12 kommentarer og 1 løsning
join næsten ens tabeller
Jeg udfører nogle tests af nogle ting, og alt efter hvordan testen går, putter jeg resultaterne i en tabel, navn_ok eller navn_fejl.
I navn_ok er en kolonne med tidspunktet for testen + en kolonne for hver test der bliver kørt. Disse kolonner findes også i navn_fejl, men der ud over er der også nogle kolunner der beskriver hvad fejlen har været.
Nu har jeg så brug for at få disse data læst ud, men jeg vil gerne ha dem sorteret test tidspunktet, de skal jo naturligvis læses ud, så fejlede og ok test kommer til at stå under hinanden. Der ud over er jeg kun interesseret i at få de koloner ud som findes i navn_ok, og altså de opløsninger der er mere i navn_fejl skal jeg jeg ikke bruge.
Sådan som jeg har lavet det nu kan jeg ikke rigtigt bruge, der kommer først alle data fra navn_ok, derefter alt fra navn_felj i sine helt egne koloner, selv om de hedder det samme.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Det er et ret godt bud, og meget tæt på det jeg ville ha. Det er rigtigt nok at det virker hvis jeg, som du også gør, skriver navnene på de koloner jeg vil ha over. Mit problem er at jeg på forhånd ikke kender navnene på kolonerne ejg skal bruge, så * ville være rart. Evt noget lignende:
( SELECT * FROM `navn_ok`) UNION ( SELECT `navn_ok`.* FROM `navn_fejl`)
Ellers kan jeg da godt starte med at læse kolone navnene ud, og selv lave statement'en med alle navnene i.
Ps. ved godt at mit exempler der er ret langt fra noget der virker, man bare lige for at vise hvad det er jeg mener håber jeg det giver lidt mening og kan bruges :)
Nu virker det i mit program, tak for hjælpen arne v, du skal også ha nogle points, sender du ikke lige et svar ?
Jeg skal aligevel i mit program ha alle navnene på tabellerne ud, så det var ikke ret mange linier der skulle tilføjes for at lave den statement der skulle bruges. Her er et lilel udklip af mit program, jeg har klippet lidt i det, men jeg håber det stadig giver lidt mening (laet i bcb6): mysql_select_db(myData, Selected.c_str()); AnsiString cmd = "SHOW FIELDS FROM `" + TableName + " ok`"; AnsiString SearchCmd; if(!mysql_query(myData, cmd.c_str())) { //Show the names of the columns res = mysql_store_result( myData ) ; MYSQL_ROW row;
int Column = 0; while(row = mysql_fetch_row(res)) { Column++; //Make statement for search SearchCmd = SearchCmd+"`"+row[0]+"`,"; } //Remove the last , SearchCmd.Delete(SearchCmd.Length(), 1);
Jeg har lige et tillægs spørgsmål: nu kan det være at samme enhed er tested flere gange. Hvis dette forekommer vil jeg gerne kun kunne vise første gang den blev tested (en af kolonerne er et serial nummer så enhederne kan spores i databasen).
Ja, jeg har glemt dig (igen). Jeg har fået det til at køre ved at lave en temporer tabel og indsætte alt data i sorteret rækkefølge efter test tid. Derefter henter jeg data fra den table, og grouper efter serial nummer.
Men jeg har ladet mig fortælle at med mysql ver 4.1.7 (og op efter) skulle det ikke være nødvendig at gemme i den midlertidige tabel, da denne kan lave subqueries.
svaret er iøvrigt stadig ikke accepteret (man skal markere det navn man vil acceptere inden man klikker accepter - ellers ignorerer den bare ens klik på accepter !)
Synes godt om
Ny brugerNybegynder
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.