Gå til innhold

Gjest Slettet+142

Anbefalte innlegg

Gjest Slettet+142

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
Videoannonse
Annonse

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 av roac
Lenke til kommentar
Gjest Slettet+142
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... :p

 

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 av Slettet+142
Lenke til kommentar

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 av roac
Lenke til kommentar
Gjest Slettet+142

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

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 av roac
Lenke til kommentar
Gjest Slettet+142

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 :p

 

begge to tabellene er helt identiske, men "dvd" kan inneholde identiske verdier(utenom DVD_ID) med dvd_mrt...

Endret av Slettet+142
Lenke til kommentar

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

oki... :p

 

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... :p

 

takk uansett ^^

 

OT: Nice signatur...

 

 

edit: -------DVD_ID == PRIMARY KEY-------

Endret av Slettet+142
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...