wat voor query?

Status
Niet open voor verdere reacties.

jeel2008

Gebruiker
Lid geworden
30 okt 2008
Berichten
839
hallo, ik ben net nieuw in de wereld van mysql. ik ben nog een beetje aan het experimenteren, maar snap iets niet.

ik heb 3 tabellen in een database:
1. spelers 2.huisdier 3.haarkleur

ik weet niet of ik het goed heb opgezet. alleen het eerste veld in tabel 'spelers' heb ik een primaire sleutel gegeven. dat is HET unieke kenmerk. dat nummer, bijvoorbeeld de speler met spelers_id nummer 1, heb ik vervolgens handmatig ingevoegd in het eerste veld van de tweede en derde tabel.
1. is dat ok, om het zo te doen? en 'zo' is dan handmatig.

ok, tweede vraag:
wat voor query geef ik op als ik alle spelers die bij ajax spelen, met rood haar en die een kat als huisdier hebben? ik heb geen idee hoe dat zit.

3. laatste vraag
ik wil dat terugzien als 3 keuzevervolglijstjes.
dus 1e keuzevervolglijst: namen spelers, tweede haarkleur, derde huisdier, zodat mensen kunnen aanklikken welke opties ze willen combineren. het mooiste zou natuurlijk zijn dat als je bv speler 1 aanklikt, die zeg maar rood haar heeft, dat dan DIRECT AUTOMATISCH in de tweede kolom haarkleuren die niet rood zijn ook al niet meer beschikbaar zijn om aan te klikken (zodat je nooit een nodeloze zoekopdracht geeft zal ik maar zeggen).

ik geef toe, t zijn heel wat vragen, maar misschien kan iemand me het op een eenvoudige manier uitleggen?

bedankt alvast,
Jeel2008
 

Bijlagen

  • spelers.jpg
    spelers.jpg
    27,2 KB · Weergaven: 45
  • huisdier.jpg
    huisdier.jpg
    17,3 KB · Weergaven: 38
  • haarkleur.jpg
    haarkleur.jpg
    22,1 KB · Weergaven: 28
Laatst bewerkt:
Wat betreft 1, dat klopt idd. Je kunt elke tabel maar 1 auto-key geven, de rest moet je 'handmatig' invullen (je kunt je script dit ook automatisch laten doen, maar dat komt op hetzelfde neer)

Om te selecteren over meerdere tabellen kun je een JOIN statement gebruiken, met een WHERE clausule om aan te geven wat je zoek voorwaarden zijn.

Code:
SELECT naam
FROM speler
INNER JOIN haarkleur ON haarkleur.spelersid = speler.id
INNER JOIN huisdier ON huisdier.spelersid = speler.id
WHERE huisdier.type = 'kat' AND haarkleur.kleur = 'rood'

De derde optie is een stuk ingewikkelder, en bovendien voornamelijk javascript/html en geen SQL en ik heb helaas geen fut meer om daar nog op in te gaan :P
 
Mysql

hallo frats,
t was inderdaag nogal een lange vraag die derde.
toch bedankt , ik ga het eens bekijken op mn gemakje.
----
even later:

dit is de query die ik gaf:

SELECT naam
FROM speler
INNER JOIN haarkleur ON haarkleur.spelersid = spelersid
INNER JOIN huisdier ON huisdier.spelersid = spelersid
WHERE huisdier.type = 'kat' AND haarkleur.kleur = 'rood'

resultaat zoekactie:
#1052 - Column 'spelersid' in on clause is ambiguous

?? dubbelop.

toen heb ik er maar eentje weggehaald, met hetzelfde resultaat. toen heb ik ze allebei maar weggehaald.

met dit als query:
SELECT naam
FROM speler
INNER JOIN haarkleur ON haarkleur.spelersid
INNER JOIN huisdier ON huisdier.spelersid
WHERE huisdier.type = 'kat' AND haarkleur.kleur = 'rood'

dat zorgde in ieder geval ervoor dat er geen foutmeldingen kwamen.
toen kreeg ik , zie image onder, als resultaat. niet helemaal wat ik bedoelde.
 

Bijlagen

  • tabel.jpg
    tabel.jpg
    39,6 KB · Weergaven: 63
Laatst bewerkt:
#1052 - Column 'spelersid' in on clause is ambiguous betekend dat hij meerdere tabellen heeft gevonden met dezelfde kolom, en dat jij niet specifiek aangeeft welke je bedoelt :)

Wat je moet doen is voor spelersid de tabelnaam zetten, zoals ik in mijn voorbeeld ook deed (alleen had ik speler.id ipv speler.spelersid)

Dus je zet eerst de tabelnaam, dan een punt, en dan de kolom.

Zo weet je query precies welke tabel hij moet joinen op welke tabel.
 
vraag

hallo frats,
laatste vraag dan.
stel dat ik nu expert word in queries , dan heb ik er nog niets aan. het heeft weinig zin hele dagen lang je eigen database vragen te stellen.
waar het mij om gaat is dat ik een website kan maken, waarop bezoekers mijn database vragen kunnen stellen. dat zij kunnen zoeken via enkele vragen, zoals zoek alle spelers met rood haar en een kanarie als huisdier.
maar hoe zit dat? is dat formuliersgewijs? sturen ze een formulier? heeft het iets te doen met 'echo' ? maw: wat is de simpele code die een invoerveld ( of liefst enkele invoervelden) toont, waarna info verschijnt als het ingevuld is?
groeten jeel2008
 
Daar houdt het helaas op wat betreft SQL, en moet je overstappen op PHP... om een formulier uit te lezen van de gebruiker moet je een PHP script schrijven die vervolgens verbinding legt met je database en een query samenstelt op basis van de dingen die de gebruiker invult.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan