2 mysqli in elkaar!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Innovatieve, nauwkeurige Senior PHP Developer voor

Eind jaren ’90 is dit bedrijf opgericht. Ze hebben zich altijd beziggehouden met het ontwikkelen van software voor overheidsinstanties. Dit zijn instanties waaronder bijvoorbeeld ook onder andere : de belastingdienst, burgerszaken, verschillende bedrijven, notarissen, incassobureau’s en ook nog bewindvoerders. Momenteel tellen ze 20 medewerkers, waarvan 2/3 deel allemaal developers zijn. Doordat ze de enigste aanbieder van dit soort software op de markt zijn, groeien ze erg hard. Door de enorme groei, hebben ze dan ook concrete groeiplannen in het verschiet. Functie-omschrijving Het bedrijf wordt door allerlei instanties ingeschakeld. Tegenwoordig wordt alles digitaal geregeld en gezien de essentie van dit soort

Bekijk vacature »

Full-stack Developer - FinTech - The Netherlands

THIS POSITION IS OPEN FOR INTERNATIONAL CANDIDATES. VISA SPONSORSHIP AND RELOCATION IS PROVIDED. This company creates high performance systems for the management of financial data. They are looking for a Senior Full-Stack Software Engineer with the strong knowledge of Java/JavaScript to join their team. You will be creating and maintaining web based applications, while working in agile environment. They are working with latest technologies like NoSQL (Cassandra) databases, Spark and Scala. Your key responsibilities as Senior Full-Stack Developer: Design, develop, test, deploy, maintain and improve software. Manage individual projects, deadlines and deliverables. You qualifications Senior Full-Stack Developer: BA/BS degree in

Bekijk vacature »

Kees Mulder

Kees Mulder

11/01/2016 09:27:56
Quote Anchor link
Weet iemand hoe ik twee query's kan laten zien in een resultaat. Ik het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$conn
= new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}


$sql = "SELECT id, voornaam, achternaam FROM leden";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Naam: " . $row["voornaam"]. " " . $row["achternaam"]. " - Groep: " . $row["groep"]. "<br>";
    }
}
else {
    echo "0 results";
}

$conn->close();
?>


Maar ik heb nog een tweede tabel die bestaat uit in welke groep de leden zitten. En ze kunnen in meerdere groepen zitten.

1. Piet Mulder - Rekenen
2. Kees Mulder - Rekenen - Tekenen
3. Karel Mulder - Tekenen - Geschiedenis

Alleen weet ik niet hoe ik dat voor elkaar kan krijgen?

Tweede tabel is 'groepen' en bestaat uit 'groep_id' en 'groep'
Gewijzigd op 11/01/2016 09:50:45 door Kees Mulder
 
PHP hulp

PHP hulp

19/01/2019 23:02:57
 
Pipo Clown

Pipo Clown

11/01/2016 10:19:28
Quote Anchor link
Ik adviseer je om eerst te gaan kijken hoe je een database normaliseert, na normalisatie gaat het een stuk gemakkelijker
 
Ward van der Put
Moderator

Ward van der Put

11/01/2016 10:23:16
Quote Anchor link
Dat kan met een JOIN, maar die is afhankelijk van hoe je de twee tabellen combineert.
Met andere woorden: hoe heb je de leden ondergebracht in groepen?
(Hint: daar is nog een derde tabel voor nodig. )
 
Kees Mulder

Kees Mulder

11/01/2016 10:25:09
Quote Anchor link
Dat klopt ik heb de tabel 'leden_groepen'

leden_id
groepen_id
 
Jan de Laet

Jan de Laet

11/01/2016 12:11:06
Quote Anchor link
Iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT id, voornaam, achternaam, groep FROM leden
JOIN leden_groepen ON leden.id=leden_groepen.leden_id
JOIN groepen ON leden.groep=groepen.groep_id


Combineert alle leden met alle leden_groepen (op basis van leden_id) en met groepen (op basis van groep_id)
 
Kees Mulder

Kees Mulder

11/01/2016 13:50:59
Quote Anchor link
Ik had het zover al voor elkaar alleen ik weet niet hoe ik het overzicht dan ga krijgen met de groepen erachter?

1. Piet Mulder - Rekenen
2. Kees Mulder - Rekenen - Tekenen
3. Karel Mulder - Tekenen - Geschiedenis

Moet dat met een extra select uit de tabel of iets met foreach oid? Dat stuk weet ik niet hoe ik dat moet doen?!
 
Jan de Laet

Jan de Laet

11/01/2016 14:09:59
Quote Anchor link
Dit kan je eventueel oplossen in de PHP waar je de resultaten verwerkt.

Ook kun je kijken of GROUP_CONCAT een oplossing biedt. https://www.percona.com/blog/2013/10/22/the-power-of-mysqls-group_concat/ of http://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php
Gewijzigd op 11/01/2016 14:11:47 door Jan de Laet
 
Thomas van den Heuvel

Thomas van den Heuvel

11/01/2016 14:12:06
Quote Anchor link
Indien het ook mogelijk is dat een lid (tijdelijk) niet onderdeel uitmaakt van een groep kun je beter LEFT JOINs gebruiken anders wordt het lid in het geheel niet getoond.

Als ik mij niet vergis levert de query van Jan mogelijk meerdere keren eenzelfde lid op, maar met verschillende groepen, zoals hij aangeeft krijg je alle combinaties terug. Elke combinatie is een record. Bij het doorlopen van de resultaten zou je dus bij kunnen houden van welk lid je gegevens weergeeft. Betreft het een ander lid: begin een nieuwe regel (en houd bij dat dit het "huidige" lid is), betreft het eenzelfde lid toon dan enkel een groep bij het huidige lid.

EDIT: de laatste suggestie van Jan is waarschijnlijk een stuk simpeler. Maar let op randgevallen zoals leden die niet tot een groep behoren, als dit mogelijk is.
Gewijzigd op 11/01/2016 14:13:31 door Thomas van den Heuvel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.