Gjest Slettet+142 Skrevet 17. juni 2006 Del Skrevet 17. juni 2006 noen som ser feil i denne MySQL-koden? den e ment til et søk... SELECT * FROM dvd, dvd_mrt WHERE dvd_id LIKE '%2%' Lenke til kommentar
roac Skrevet 17. juni 2006 Del Skrevet 17. juni 2006 (endret) Etter det jeg ser er vel koden grei nok, men det vel ikke helt hensiktsmessig å få et cross join som resultat, altså at alle rader i dvd knyttes mot alle rader i dvd_mrt. Det du mangler er en fornuftig knytning mellom de to tabellene i spørringen din. Den gode måten å gjøre dette på vil være noe på formen: SELECT * FROM dvd INNER JOIN dvd_mrt ON (dvd.dvd_mrt_id = dvd_mrt.id) WHERE dvd_id LIKE '%2%' Og ja, du må bruke inner join selv om du har definert foreign keys. Alternativt mener jeg at MySQL har støtte for natural join, som kan være praktisk å bruke i ditt tilfelle. Endret 17. juni 2006 av roac Lenke til kommentar
Gjest Slettet+142 Skrevet 17. juni 2006 Del Skrevet 17. juni 2006 (endret) Etter det jeg ser er vel koden grei nok, men det vel ikke helt hensiktsmessig å få et cross join som resultat, altså at alle rader i dvd knyttes mot alle rader i dvd_mrt. Det du mangler er en fornuftig knytning mellom de to tabellene i spørringen din. Den gode måten å gjøre dette på vil være noe på formen: SELECT * FROM dvd INNER JOIN dvd_mrt ON (dvd.dvd_mrt_id = dvd_mrt.id) WHERE dvd_id LIKE '%2%' Og ja, du må bruke inner join selv om du har definert foreign keys. Alternativt mener jeg at MySQL har støtte for natural join, som kan være praktisk å bruke i ditt tilfelle. 6327806[/snapback] skal prøve det no... men... ka e JOIN? bare spørsmål... lurer på ka det gjør, sånn for å "tilfredsstille" den tanken... OG..... no har den vel kun lagt inn feltet "dvd_id"... skal ha "dvd_path" og... tillegg: den virket ikkje.. kommer opp: mysql_fetch_array(): supplied argument is not a valid MySQL result resource Endret 17. juni 2006 av Slettet+142 Lenke til kommentar
roac Skrevet 18. juni 2006 Del Skrevet 18. juni 2006 (endret) Join er en knytning du gjør mellom rader i tabeller når du henter data fra flere tabeller. (Det kan brukes på bare en tabell også, men det trenger du ikke bry deg om ennå). Join (Wikipedia) Hva du har lagt inn inn av kolonner i de forskjellige tabellene har jeg overhodet ingen informasjon om, jeg kom med et forslag som å rimelig tett opp til det som blir den endelige løsningen. Men, for å være litt mer spesifikk så må du ha en verdi felles i de to tabellene dine som du kan bruke for å knytte dvd og dvd_mrt sammen. Hva denne kolonnen heter i de to tabellene har jeg ingen forutsetning for å kunne si. Siden du tydeligvis er rimelig fersk på databaser vil du sikkert kunne dra nytte av DevSiden, selv om jeg ikke nødvendigvis er enig i alt som står der. Endret 18. juni 2006 av roac Lenke til kommentar
Gjest Slettet+142 Skrevet 18. juni 2006 Del Skrevet 18. juni 2006 oki... hvis du eller andre gidder å hjelpe videre så: tabell "dvd": kolonne: "dvd_id" kolonne: "dvd_path" tabell: "dvd_mrt": kolonne: "dvd_id" kolonne: "dvd_path" --sånn ser de to tabellene ut... Lenke til kommentar
roac Skrevet 18. juni 2006 Del Skrevet 18. juni 2006 (endret) Er dvd_id en unik verdi i dvd_mrt også? Ditto lurer jeg på for dvd_path. Hva slags forhold er det mellom dvd og dvd_mrt? Kan flere verdier i dvd_mrt høre en verdi i dvd eller motsatt? Dette er ting vi må vite for å kunne gi et godt svar på hva du bør gjøre. Et mulig løsning som ikke nødvendigvis gjør det du ønsker er: SELECT * FROM dvd INNER JOIN dvd_mrt ON ((dvd.dvd_id = dvd_mrt.dvd_id) and (dvd.dvd_path = dvd_mrt.dvd_path)) WHERE dvd_id LIKE '%2%' Endret 18. juni 2006 av roac Lenke til kommentar
Gjest Slettet+142 Skrevet 18. juni 2006 Del Skrevet 18. juni 2006 (endret) ehm...altså... dvd_id er en auto_increment i begge(INT).. dvd_path inneholder navnet på dvdene i samlingen... f.eks: +-----------|--------------------------+ | DVD_ID |------ DVD_PATH------ | |------------|--------------------------| |-----1------| Assault on Precinct 13| +-----------|--------------------------+ ...osv nedover... var det sånn du ville vite? :S begge to tabellene er helt identiske, men "dvd" kan inneholde identiske verdier(utenom DVD_ID) med dvd_mrt... Endret 18. juni 2006 av Slettet+142 Lenke til kommentar
roac Skrevet 18. juni 2006 Del Skrevet 18. juni 2006 Ha meg unnskyldt, men du har altså en datamodell som det er helt håpløst å jobbe mot, og jeg anbefaler deg på det sterkeste å se på DevSiden før du går videre. Det du må lære deg er primærnøkler og fremmednøkler. Dette siden du pr nå ikke har en verdi du kan bruke til å knytte informasjon mellom de to tabellene sammen. Siden du bruker autoinkrement har du ikke mulighet til å bruke dem til å knytte sammen tabellene, navn på film kan du ikke bruke siden det er flere filmer som har samme navn, f eks er det laget flere Titanic og flere Insomnia. Min klare anbefaling, lær deg litt om datamodellering (sjekk gjerne med en høgskole eller et universitet hva de bruker av litteratur). Og så kan du gå i gang med prosjektet ditt. PS! Jeg ønsker ikke å ta motet fra deg, bare få deg til å gjøre ting fornuftig fra dag en. Alternativt så kan du jo se om noen andre har gjort noe av det samme som du ønsker, og få noen hint fra de det har gjort. Lenke til kommentar
Gjest Slettet+142 Skrevet 18. juni 2006 Del Skrevet 18. juni 2006 (endret) oki... for å si det sånn, så har eg en løsning som gir svaret i to deler.. den virker... du har vel egentlig bare hjulpet meg med tanken på søk i flere tabeller uten "linkende" info... takk uansett ^^ OT: Nice signatur... edit: -------DVD_ID == PRIMARY KEY------- Endret 18. juni 2006 av Slettet+142 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå