Kom ihåg mig?
Home Menu

Menu


SQL hämta rader med vissa ord i

 
 
Ämnesverktyg Visningsalternativ
Oläst 2013-06-22, 21:44 #1
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Nerix, jag förstår inte riktigt varför det behövs här?
Slängde ihop en sak som visar vad jag har i min databas:
http://www.anaxa.se/schema.php

Kan jag verkligen göra det enklare? Det känns bara krångligare att göra fler tabeller?
Anaxa är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-22, 23:02 #2
linusoleander linusoleander är inte uppkopplad
Medlem
 
Reg.datum: Feb 2010
Inlägg: 234
linusoleander linusoleander är inte uppkopplad
Medlem
 
Reg.datum: Feb 2010
Inlägg: 234
Citat:
Ursprungligen postat av Anaxa Visa inlägg
Nerix, jag förstår inte riktigt varför det behövs här?
Slängde ihop en sak som visar vad jag har i min databas:
http://www.anaxa.se/schema.php

Kan jag verkligen göra det enklare? Det känns bara krångligare att göra fler tabeller?
Läs på om normalisering så förstår du säker vad han menar.
linusoleander är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-20, 14:21 #3
christian. christian. är inte uppkopplad
Nykomling
 
Reg.datum: Apr 2013
Inlägg: 29
christian. christian. är inte uppkopplad
Nykomling
 
Reg.datum: Apr 2013
Inlägg: 29
Jag skulle ha gjort såhär:
Kod:
movies
id
title

genres
id
title

genres_movies
id
movie_id
genre_id
Sen för att visa filmer för en viss genre om du har urlen http://dinsida.se/genre?id=2:
Kod:
$genre_id = mysql_real_escape_string($_GET['id']);

SELECT 
    movies.id, movies.title 
FROM 
    movies
JOIN 
    genres_movies
ON 
    genres_movies.movie_id = movies.id
WHERE 
    genres_movies.genre_id= '$genre_id'
Skriver aldrig raw sql längre så har ej testat koden, men något liknande i alla fall.

Senast redigerad av christian. den 2013-06-20 klockan 14:26
christian. är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-22, 22:13 #4
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Det beror ju på vad du menar med enklare. Om du ska kunna göra systemet skalbart och göra effektiva sökningar så bör du normalisera din data. Är det 100% säkert att det inte växer nämnvärt så är det inte lika viktigt. Du verkar ha lite problem med din data förresten med negativa timestamps på några ställen.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-22, 22:47 #5
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Databasen kommer växa men jag vill försöka optimera allting nu innan det drar igång.

Det där med negativa timestamps är inget fel utan jag sparar bara ett datum bakom 1970
Anaxa är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-22, 23:36 #6
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av Anaxa Visa inlägg
Databasen kommer växa men jag vill försöka optimera allting nu innan det drar igång.

Det där med negativa timestamps är inget fel utan jag sparar bara ett datum bakom 1970
Aj då, sorry, missade det Sitter på mobilen så allt är lite mindre överskådligt. Hur som helst så bör du strukturera din databas annorlunda så att du slipper trycka in flera värden i samma fält. Du får då snabbt problem. Tänk också på att två personer kan ha samma namn ifall det blir relevant.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-22, 23:58 #7
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Nu som ni kan se på länken så har jag droppat fältet 'genres' på ´movies´-tabellen och lagt in en tabell som heter 'movies_genres'. Den tabellen har relation med tabellerna 'movies' och 'genres'. Det borde följa 3nf om jag har läst på rätt.

@tartareandesire | jo jag antar att jag får lägga alla regissörer i en tabell också på samma sätt som jag gjort med genres.

OT: Om det nu är så att två regissörer har likadana namn, finns det då något sätt att urskilja dem? Jag använder http://www.omdbapi.com/ för att få informationen om en specifik film. Men den hämtar namn och inget mer. Jag vet utifrån att ha kollat på Imdb att varje regissör har ett unikt id så jag antar att jag får göra en kolumn för en regissörs id i min databas.(guh va jobbigt :P)
Anaxa är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-23, 02:54 #8
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Det mest grundläggande inom normalisering är att varje kolumn ska innehålla atomära värden, dvs du lägger ALDRIG ihop flera värden i samma kolumn. Det är 1NF (första normalformen).

3NF innebär att varje atomärt värde ska vara beroende av hela primärnyckeln och inget annat än primärnyckeln, ... so help me Codd som man brukar säga... (Codd var en matematiker som definierade normaliseringen i relationsdatabaser).
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-23, 14:55 #9
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Okej conny, så om alla filmer enligt min tabell har likadant årtal i sitt 'year' fält så strider det emot tredje formens normalisering?

Jag funderade också hur på jag ska hämta alla filmer som har genrerna komedi och skräck.

Jag provade:
PHP-kod:
string(149"SELECT * FROM movies JOIN movie_genres ON movie_genres.movie_id = movies.id WHERE movie_genres.genre_id = 2 AND movie_genres.genre_id = 1 LIMIT 0, 30" 
vilket inte jag mig någonting eftersom samma värde kan inte vara 2 olika saker samtidigt. Men detta är det bästa jag kan komma på.
Anaxa är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-23, 22:37 #10
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av Anaxa Visa inlägg
Okej conny, så om alla filmer enligt min tabell har likadant årtal i sitt 'year' fält så strider det emot tredje formens normalisering?

Jag funderade också hur på jag ska hämta alla filmer som har genrerna komedi och skräck.

Jag provade:
PHP-kod:
string(149"SELECT * FROM movies JOIN movie_genres ON movie_genres.movie_id = movies.id WHERE movie_genres.genre_id = 2 AND movie_genres.genre_id = 1 LIMIT 0, 30" 
vilket inte jag mig någonting eftersom samma värde kan inte vara 2 olika saker samtidigt. Men detta är det bästa jag kan komma på.
Kan du lägga upp DDL-scriptet och ett script med INSERT av data i alla tabellerna så underlättar det om du vill ha hjälp, så slipper jag sitta och knappa in detta manuellt....
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 18:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017